@kubb/plugin-client
Version:
API client generator plugin for Kubb, creating type-safe HTTP clients (Axios, Fetch) from OpenAPI specifications for making API requests.
148 lines (138 loc) • 4.95 kB
text/typescript
/**
* Generated by Kubb (https://kubb.dev/).
* Do not edit manually.
*/
import type { RequestConfig, ResponseErrorConfig } from './test/.kubb/fetch'
import type {
CreateUserMutationRequest,
CreateUserMutationResponse,
CreateUsersWithListInputMutationRequest,
CreateUsersWithListInputMutationResponse,
LoginUserQueryResponse,
LoginUserQueryParams,
LoginUser400,
LogoutUserQueryResponse,
GetUserByNameQueryResponse,
GetUserByNamePathParams,
GetUserByName400,
GetUserByName404,
UpdateUserMutationRequest,
UpdateUserMutationResponse,
UpdateUserPathParams,
DeleteUserMutationResponse,
DeleteUserPathParams,
DeleteUser400,
DeleteUser404,
} from './findByTags'
import { fetch } from './test/.kubb/fetch'
export class User {
#client: typeof fetch
constructor(config: Partial<RequestConfig> & { client?: typeof fetch } = {}) {
this.#client = config.client || fetch
}
/**
* @description This can only be done by the logged in user.
* @summary Create user
* {@link /user}
*/
async createUser(data?: CreateUserMutationRequest, config: Partial<RequestConfig<CreateUserMutationRequest>> & { client?: typeof fetch } = {}) {
const { client: request = this.#client, ...requestConfig } = config
const requestData = data
const res = await request<CreateUserMutationResponse, ResponseErrorConfig<Error>, CreateUserMutationRequest>({
method: 'POST',
url: `/user`,
data: requestData,
...requestConfig,
})
return res.data
}
/**
* @description Creates list of users with given input array
* @summary Creates list of users with given input array
* {@link /user/createWithList}
*/
async createUsersWithListInput(
data?: CreateUsersWithListInputMutationRequest,
config: Partial<RequestConfig<CreateUsersWithListInputMutationRequest>> & { client?: typeof fetch } = {},
) {
const { client: request = this.#client, ...requestConfig } = config
const requestData = data
const res = await request<CreateUsersWithListInputMutationResponse, ResponseErrorConfig<Error>, CreateUsersWithListInputMutationRequest>({
method: 'POST',
url: `/user/createWithList`,
data: requestData,
...requestConfig,
})
return res.data
}
/**
* @summary Logs user into the system
* {@link /user/login}
*/
async loginUser(params?: LoginUserQueryParams, config: Partial<RequestConfig> & { client?: typeof fetch } = {}) {
const { client: request = this.#client, ...requestConfig } = config
const res = await request<LoginUserQueryResponse, ResponseErrorConfig<LoginUser400>, unknown>({
method: 'GET',
url: `/user/login`,
params,
...requestConfig,
})
return res.data
}
/**
* @summary Logs out current logged in user session
* {@link /user/logout}
*/
async logoutUser(config: Partial<RequestConfig> & { client?: typeof fetch } = {}) {
const { client: request = this.#client, ...requestConfig } = config
const res = await request<LogoutUserQueryResponse, ResponseErrorConfig<Error>, unknown>({ method: 'GET', url: `/user/logout`, ...requestConfig })
return res.data
}
/**
* @summary Get user by user name
* {@link /user/:username}
*/
async getUserByName(username: GetUserByNamePathParams['username'], config: Partial<RequestConfig> & { client?: typeof fetch } = {}) {
const { client: request = this.#client, ...requestConfig } = config
const res = await request<GetUserByNameQueryResponse, ResponseErrorConfig<GetUserByName400 | GetUserByName404>, unknown>({
method: 'GET',
url: `/user/${username}`,
...requestConfig,
})
return res.data
}
/**
* @description This can only be done by the logged in user.
* @summary Update user
* {@link /user/:username}
*/
async updateUser(
username: UpdateUserPathParams['username'],
data?: UpdateUserMutationRequest,
config: Partial<RequestConfig<UpdateUserMutationRequest>> & { client?: typeof fetch } = {},
) {
const { client: request = this.#client, ...requestConfig } = config
const requestData = data
const res = await request<UpdateUserMutationResponse, ResponseErrorConfig<Error>, UpdateUserMutationRequest>({
method: 'PUT',
url: `/user/${username}`,
data: requestData,
...requestConfig,
})
return res.data
}
/**
* @description This can only be done by the logged in user.
* @summary Delete user
* {@link /user/:username}
*/
async deleteUser(username: DeleteUserPathParams['username'], config: Partial<RequestConfig> & { client?: typeof fetch } = {}) {
const { client: request = this.#client, ...requestConfig } = config
const res = await request<DeleteUserMutationResponse, ResponseErrorConfig<DeleteUser400 | DeleteUser404>, unknown>({
method: 'DELETE',
url: `/user/${username}`,
...requestConfig,
})
return res.data
}
}