Files
chad/new-client/src/shared/api/generated-chad-api.ts
2026-05-22 05:08:02 +06:00

727 lines
17 KiB
TypeScript

/* eslint-disable */
/* tslint:disable */
// @ts-nocheck
/*
* ---------------------------------------------------------------
* ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##
* ## ##
* ## AUTHOR: acacode ##
* ## SOURCE: https://github.com/acacode/swagger-typescript-api ##
* ---------------------------------------------------------------
*/
/**
* Attachment
* Attachment
*/
export interface Attachment {
id: string;
name: string;
mimetype: string;
/** @min 0 */
size: number;
/** @format date-time */
createdAt: string;
}
/**
* Channel
* Channel
*/
export interface Channel {
id: string;
ownerUsername: string | null;
name: string;
persistent: boolean;
}
/**
* ChatMessage
* ChatMessage
*/
export interface ChatMessage {
/** @format uuid */
id: string;
senderUsername: string;
/** @minLength 1 */
text: string;
/** @format date-time */
createdAt: string;
/** @format date-time */
updatedAt: string;
attachments: {
id: string;
name: string;
mimetype: string;
/** @min 0 */
size: number;
/** @format date-time */
createdAt: string;
}[];
}
/**
* CreateChannelPayload
* CreateChannelPayload
*/
export interface CreateChannelPayload {
name: string;
persistent: boolean;
}
/**
* CreateUser
* CreateUser
*/
export interface CreateUser {
/** @minLength 1 */
username: string;
/** @minLength 6 */
password: string;
}
/**
* GetAttachmentParams
* GetAttachmentParams
*/
export interface GetAttachmentParams {
/** @format uuid */
id: string;
}
/**
* GetUserQuery
* GetUserQuery
*/
export interface GetUserQuery {
username?: string;
}
/**
* Login
* Login
*/
export interface Login {
/** @minLength 1 */
username: string;
/** @minLength 1 */
password: string;
}
/**
* NewChatMessagePayload
* NewChatMessagePayload
*/
export interface NewChatMessagePayload {
/** @minLength 1 */
text: string;
attachments?: string[];
}
/**
* Reply
* Reply
*/
export interface Reply {
/** @format uuid */
messageId: string;
senderUsername: string;
text: string;
}
/**
* ResponseError
* ResponseError
*/
export interface ResponseError {
statusCode: number;
error: string;
message: string;
}
/**
* UpdateUserPayload
* UpdateUserPayload
*/
export interface UpdateUserPayload {
displayName: string;
}
/**
* UpdateUserPreferencesPayload
* UpdateUserPreferencesPayload
*/
export interface UpdateUserPreferencesPayload {
toggleInputHotkey?: string;
toggleOutputHotkey?: string;
}
/**
* UserPreferences
* UserPreferences
*/
export interface UserPreferences {
toggleInputHotkey: string;
toggleOutputHotkey: string;
}
/**
* User
* User
*/
export interface User {
username: string;
displayName: string;
/** @format date-time */
createdAt: string;
}
export type QueryParamsType = Record<string | number, any>;
export type ResponseFormat = keyof Omit<Body, "body" | "bodyUsed">;
export interface FullRequestParams extends Omit<RequestInit, "body"> {
/** set parameter to `true` for call `securityWorker` for this request */
secure?: boolean;
/** request path */
path: string;
/** content type of request body */
type?: ContentType;
/** query params */
query?: QueryParamsType;
/** format of response (i.e. response.json() -> format: "json") */
format?: ResponseFormat;
/** request body */
body?: unknown;
/** base url */
baseUrl?: string;
/** request cancellation token */
cancelToken?: CancelToken;
}
export type RequestParams = Omit<
FullRequestParams,
"body" | "method" | "query" | "path"
>;
export interface ApiConfig<SecurityDataType = unknown> {
baseUrl?: string;
baseApiParams?: Omit<RequestParams, "baseUrl" | "cancelToken" | "signal">;
securityWorker?: (
securityData: SecurityDataType | null,
) => Promise<RequestParams | void> | RequestParams | void;
customFetch?: typeof fetch;
}
export interface HttpResponse<D extends unknown, E extends unknown = unknown>
extends Response {
data: D;
error: E;
}
type CancelToken = Symbol | string | number;
export enum ContentType {
Json = "application/json",
JsonApi = "application/vnd.api+json",
FormData = "multipart/form-data",
UrlEncoded = "application/x-www-form-urlencoded",
Text = "text/plain",
}
export class HttpClient<SecurityDataType = unknown> {
public baseUrl: string = "";
private securityData: SecurityDataType | null = null;
private securityWorker?: ApiConfig<SecurityDataType>["securityWorker"];
private abortControllers = new Map<CancelToken, AbortController>();
private customFetch = (...fetchParams: Parameters<typeof fetch>) =>
fetch(...fetchParams);
private baseApiParams: RequestParams = {
credentials: "same-origin",
headers: {},
redirect: "follow",
referrerPolicy: "no-referrer",
};
constructor(apiConfig: ApiConfig<SecurityDataType> = {}) {
Object.assign(this, apiConfig);
}
public setSecurityData = (data: SecurityDataType | null) => {
this.securityData = data;
};
protected encodeQueryParam(key: string, value: any) {
const encodedKey = encodeURIComponent(key);
return `${encodedKey}=${encodeURIComponent(typeof value === "number" ? value : `${value}`)}`;
}
protected addQueryParam(query: QueryParamsType, key: string) {
return this.encodeQueryParam(key, query[key]);
}
protected addArrayQueryParam(query: QueryParamsType, key: string) {
const value = query[key];
return value.map((v: any) => this.encodeQueryParam(key, v)).join("&");
}
protected toQueryString(rawQuery?: QueryParamsType): string {
const query = rawQuery || {};
const keys = Object.keys(query).filter(
(key) => "undefined" !== typeof query[key],
);
return keys
.map((key) =>
Array.isArray(query[key])
? this.addArrayQueryParam(query, key)
: this.addQueryParam(query, key),
)
.join("&");
}
protected addQueryParams(rawQuery?: QueryParamsType): string {
const queryString = this.toQueryString(rawQuery);
return queryString ? `?${queryString}` : "";
}
private contentFormatters: Record<ContentType, (input: any) => any> = {
[ContentType.Json]: (input: any) =>
input !== null && (typeof input === "object" || typeof input === "string")
? JSON.stringify(input)
: input,
[ContentType.JsonApi]: (input: any) =>
input !== null && (typeof input === "object" || typeof input === "string")
? JSON.stringify(input)
: input,
[ContentType.Text]: (input: any) =>
input !== null && typeof input !== "string"
? JSON.stringify(input)
: input,
[ContentType.FormData]: (input: any) => {
if (input instanceof FormData) {
return input;
}
return Object.keys(input || {}).reduce((formData, key) => {
const property = input[key];
formData.append(
key,
property instanceof Blob
? property
: typeof property === "object" && property !== null
? JSON.stringify(property)
: `${property}`,
);
return formData;
}, new FormData());
},
[ContentType.UrlEncoded]: (input: any) => this.toQueryString(input),
};
protected mergeRequestParams(
params1: RequestParams,
params2?: RequestParams,
): RequestParams {
return {
...this.baseApiParams,
...params1,
...(params2 || {}),
headers: {
...(this.baseApiParams.headers || {}),
...(params1.headers || {}),
...((params2 && params2.headers) || {}),
},
};
}
protected createAbortSignal = (
cancelToken: CancelToken,
): AbortSignal | undefined => {
if (this.abortControllers.has(cancelToken)) {
const abortController = this.abortControllers.get(cancelToken);
if (abortController) {
return abortController.signal;
}
return void 0;
}
const abortController = new AbortController();
this.abortControllers.set(cancelToken, abortController);
return abortController.signal;
};
public abortRequest = (cancelToken: CancelToken) => {
const abortController = this.abortControllers.get(cancelToken);
if (abortController) {
abortController.abort();
this.abortControllers.delete(cancelToken);
}
};
public request = async <T = any, E = any>({
body,
secure,
path,
type,
query,
format,
baseUrl,
cancelToken,
...params
}: FullRequestParams): Promise<HttpResponse<T, E>> => {
const secureParams =
((typeof secure === "boolean" ? secure : this.baseApiParams.secure) &&
this.securityWorker &&
(await this.securityWorker(this.securityData))) ||
{};
const requestParams = this.mergeRequestParams(params, secureParams);
const queryString = query && this.toQueryString(query);
const payloadFormatter = this.contentFormatters[type || ContentType.Json];
const responseFormat = format || requestParams.format;
return this.customFetch(
`${baseUrl || this.baseUrl || ""}${path}${queryString ? `?${queryString}` : ""}`,
{
...requestParams,
headers: {
...(requestParams.headers || {}),
...(type && type !== ContentType.FormData
? { "Content-Type": type }
: {}),
},
signal:
(cancelToken
? this.createAbortSignal(cancelToken)
: requestParams.signal) || null,
body:
typeof body === "undefined" || body === null
? null
: payloadFormatter(body),
},
).then(async (response) => {
const r = response as HttpResponse<T, E>;
r.data = null as unknown as T;
r.error = null as unknown as E;
const responseToParse = responseFormat ? response.clone() : response;
const data = !responseFormat
? r
: await responseToParse[responseFormat]()
.then((data) => {
if (r.ok) {
r.data = data;
} else {
r.error = data;
}
return r;
})
.catch((e) => {
r.error = e;
return r;
});
if (cancelToken) {
this.abortControllers.delete(cancelToken);
}
if (!response.ok) throw data;
return data;
});
};
}
/**
* @title Chad API
* @version 1.0.0
*/
export class Api<
SecurityDataType extends unknown,
> extends HttpClient<SecurityDataType> {
chad = {
/**
* @description Pass file to multipart/form-data
*
* @tags Attachment
* @name AttachmentUpload
* @summary Upload attachment
* @request POST:/chad/attachment/upload
*/
attachmentUpload: (params: RequestParams = {}) =>
this.request<string, ResponseError>({
path: `/chad/attachment/upload`,
method: "POST",
format: "json",
...params,
}),
/**
* No description
*
* @tags Attachment
* @name AttachmentGet
* @summary Get attachment
* @request GET:/chad/attachment/{id}
*/
attachmentGet: (id: string, params: RequestParams = {}) =>
this.request<any, ResponseError>({
path: `/chad/attachment/${id}`,
method: "GET",
format: "json",
...params,
}),
/**
* No description
*
* @tags Auth
* @name AuthRegister
* @summary Register
* @request POST:/chad/auth/register
*/
authRegister: (data: CreateUser, params: RequestParams = {}) =>
this.request<User, ResponseError>({
path: `/chad/auth/register`,
method: "POST",
body: data,
type: ContentType.Json,
format: "json",
...params,
}),
/**
* No description
*
* @tags Auth
* @name AuthLogin
* @summary Login
* @request POST:/chad/auth/login
*/
authLogin: (data: Login, params: RequestParams = {}) =>
this.request<User, ResponseError>({
path: `/chad/auth/login`,
method: "POST",
body: data,
type: ContentType.Json,
format: "json",
...params,
}),
/**
* No description
*
* @tags Auth
* @name AuthMe
* @summary Me
* @request GET:/chad/auth/me
*/
authMe: (params: RequestParams = {}) =>
this.request<User, ResponseError>({
path: `/chad/auth/me`,
method: "GET",
format: "json",
...params,
}),
/**
* No description
*
* @tags Auth
* @name AuthLogout
* @summary Logout
* @request POST:/chad/auth/logout
*/
authLogout: (params: RequestParams = {}) =>
this.request<any, ResponseError>({
path: `/chad/auth/logout`,
method: "POST",
...params,
}),
/**
* No description
*
* @tags Channel
* @name ChannelList
* @summary Get channel list
* @request GET:/chad/channels
*/
channelList: (params: RequestParams = {}) =>
this.request<Channel[], ResponseError>({
path: `/chad/channels`,
method: "GET",
format: "json",
...params,
}),
/**
* No description
*
* @tags Channel
* @name ChannelCreate
* @summary Create channel
* @request POST:/chad/channels
*/
channelCreate: (data: CreateChannelPayload, params: RequestParams = {}) =>
this.request<Channel, ResponseError>({
path: `/chad/channels`,
method: "POST",
body: data,
type: ContentType.Json,
format: "json",
...params,
}),
/**
* No description
*
* @tags Channel
* @name ChannelDelete
* @summary Delete channel
* @request DELETE:/chad/channels/{id}
*/
channelDelete: (id: string, params: RequestParams = {}) =>
this.request<any, ResponseError>({
path: `/chad/channels/${id}`,
method: "DELETE",
...params,
}),
/**
* No description
*
* @tags Chat
* @name ChatSend
* @summary Send message
* @request POST:/chad/chat/send
*/
chatSend: (data: NewChatMessagePayload, params: RequestParams = {}) =>
this.request<ChatMessage, ResponseError>({
path: `/chad/chat/send`,
method: "POST",
body: data,
type: ContentType.Json,
format: "json",
...params,
}),
/**
* No description
*
* @tags Chat
* @name ChatMessages
* @summary Get messages
* @request GET:/chad/chat
*/
chatMessages: (
query: {
/**
* Cursor to message
* @format uuid
*/
cursor?: string;
/**
* @min 1
* @max 100
* @default 10
*/
limit: number;
},
params: RequestParams = {},
) =>
this.request<
{
messages: ChatMessage[];
/**
* Cursor to last message
* @format uuid
*/
nextCursor?: string;
},
ResponseError
>({
path: `/chad/chat`,
method: "GET",
query: query,
format: "json",
...params,
}),
/**
* No description
*
* @tags User
* @name UserGet
* @summary Get user
* @request GET:/chad/user
*/
userGet: (
query?: {
username?: string;
},
params: RequestParams = {},
) =>
this.request<User, ResponseError>({
path: `/chad/user`,
method: "GET",
query: query,
format: "json",
...params,
}),
/**
* No description
*
* @tags User
* @name UserGetPreferences
* @summary Get preferences
* @request GET:/chad/user/preferences
*/
userGetPreferences: (params: RequestParams = {}) =>
this.request<UserPreferences, ResponseError>({
path: `/chad/user/preferences`,
method: "GET",
format: "json",
...params,
}),
/**
* No description
*
* @tags User
* @name UserUpdatePreferences
* @summary Update preferences
* @request PATCH:/chad/user/preferences
*/
userUpdatePreferences: (
data: UpdateUserPreferencesPayload,
params: RequestParams = {},
) =>
this.request<any, ResponseError>({
path: `/chad/user/preferences`,
method: "PATCH",
body: data,
type: ContentType.Json,
...params,
}),
/**
* No description
*
* @tags User
* @name UserUpdateProfile
* @summary Update profile
* @request PATCH:/chad/profile
*/
userUpdateProfile: (data: UpdateUserPayload, params: RequestParams = {}) =>
this.request<User, ResponseError>({
path: `/chad/profile`,
method: "PATCH",
body: data,
type: ContentType.Json,
format: "json",
...params,
}),
};
}