diff --git a/packages/client/.gitignore b/packages/client/.gitignore new file mode 100644 index 0000000..149b576 --- /dev/null +++ b/packages/client/.gitignore @@ -0,0 +1,4 @@ +wwwroot/*.js +node_modules +typings +dist diff --git a/packages/client/.openapi-generator-ignore b/packages/client/.openapi-generator-ignore new file mode 100644 index 0000000..65c3938 --- /dev/null +++ b/packages/client/.openapi-generator-ignore @@ -0,0 +1,4 @@ +.npmignore +package.json +README.md +tsconfig.json \ No newline at end of file diff --git a/packages/client/.openapi-generator/FILES b/packages/client/.openapi-generator/FILES new file mode 100644 index 0000000..5a9810d --- /dev/null +++ b/packages/client/.openapi-generator/FILES @@ -0,0 +1,23 @@ +.gitignore +.npmignore +.openapi-generator-ignore +README.md +package.json +src/apis/AuthApi.ts +src/apis/CodeApi.ts +src/apis/CurrentUserApi.ts +src/apis/DailyChallengesApi.ts +src/apis/GameApi.ts +src/apis/LeaderboardApi.ts +src/apis/MapApi.ts +src/apis/MatchApi.ts +src/apis/NotificationApi.ts +src/apis/PvpGameApi.ts +src/apis/StatsApi.ts +src/apis/UserApi.ts +src/apis/index.ts +src/index.ts +src/models/index.ts +src/runtime.ts +tsconfig.esm.json +tsconfig.json diff --git a/packages/client/.openapi-generator/VERSION b/packages/client/.openapi-generator/VERSION new file mode 100644 index 0000000..3769235 --- /dev/null +++ b/packages/client/.openapi-generator/VERSION @@ -0,0 +1 @@ +7.1.0 \ No newline at end of file diff --git a/packages/client/package.json b/packages/client/package.json new file mode 100644 index 0000000..b2d6039 --- /dev/null +++ b/packages/client/package.json @@ -0,0 +1,15 @@ +{ + "name": "@codecharacter-2024/client", + "version": "2023.0.0", + "description": "OpenAPI client for CodeCharacter 2024", + "author": "Delta Force", + "main": "./dist/index.js", + "typings": "./dist/index.d.ts", + "scripts": { + "build": "tsc", + "build:watch": "tsc --watch" + }, + "devDependencies": { + "typescript": "*" + } +} diff --git a/packages/client/src/apis/AuthApi.ts b/packages/client/src/apis/AuthApi.ts new file mode 100644 index 0000000..39e434f --- /dev/null +++ b/packages/client/src/apis/AuthApi.ts @@ -0,0 +1,333 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * CodeCharacter API + * Specification of the CodeCharacter API + * + * The version of the OpenAPI document: 2024.0.1 + * Contact: delta@nitt.edu + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import * as runtime from '../runtime'; +import type { + AuthStatusResponse, + ForgotPasswordRequest, + GenericError, + PasswordLoginRequest, + PasswordLoginResponse, + ResetPasswordRequest, +} from '../models/index'; + +export interface ForgotPasswordOperationRequest { + forgotPasswordRequest: ForgotPasswordRequest; +} + +export interface PasswordLoginOperationRequest { + passwordLoginRequest: PasswordLoginRequest; +} + +export interface ResetPasswordOperationRequest { + resetPasswordRequest: ResetPasswordRequest; +} + +/** + * AuthApi - interface + * + * @export + * @interface AuthApiInterface + */ +export interface AuthApiInterface { + /** + * Request password reset email to be sent when user forgot their password + * @summary Forgot password + * @param {ForgotPasswordRequest} forgotPasswordRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AuthApiInterface + */ + forgotPasswordRaw( + requestParameters: ForgotPasswordOperationRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>; + + /** + * Request password reset email to be sent when user forgot their password + * Forgot password + */ + forgotPassword( + forgotPasswordRequest: ForgotPasswordRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise; + + /** + * Get authentication status: fully authenticated, activation pending and incomplete profile + * @summary Get authentication status + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AuthApiInterface + */ + getAuthStatusRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>; + + /** + * Get authentication status: fully authenticated, activation pending and incomplete profile + * Get authentication status + */ + getAuthStatus( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise; + + /** + * Login with email and password and get bearer token for authentication + * @summary Password Login + * @param {PasswordLoginRequest} passwordLoginRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AuthApiInterface + */ + passwordLoginRaw( + requestParameters: PasswordLoginOperationRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>; + + /** + * Login with email and password and get bearer token for authentication + * Password Login + */ + passwordLogin( + passwordLoginRequest: PasswordLoginRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise; + + /** + * Reset password using the token from password reset email + * @summary Reset password + * @param {ResetPasswordRequest} resetPasswordRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AuthApiInterface + */ + resetPasswordRaw( + requestParameters: ResetPasswordOperationRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>; + + /** + * Reset password using the token from password reset email + * Reset password + */ + resetPassword( + resetPasswordRequest: ResetPasswordRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise; +} + +/** + * + */ +export class AuthApi extends runtime.BaseAPI implements AuthApiInterface { + /** + * Request password reset email to be sent when user forgot their password + * Forgot password + */ + async forgotPasswordRaw( + requestParameters: ForgotPasswordOperationRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + if ( + requestParameters.forgotPasswordRequest === null || + requestParameters.forgotPasswordRequest === undefined + ) { + throw new runtime.RequiredError( + 'forgotPasswordRequest', + 'Required parameter requestParameters.forgotPasswordRequest was null or undefined when calling forgotPassword.', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + const response = await this.request( + { + path: `/auth/forgot-password`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: requestParameters.forgotPasswordRequest, + }, + initOverrides, + ); + + return new runtime.VoidApiResponse(response); + } + + /** + * Request password reset email to be sent when user forgot their password + * Forgot password + */ + async forgotPassword( + forgotPasswordRequest: ForgotPasswordRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.forgotPasswordRaw( + { forgotPasswordRequest: forgotPasswordRequest }, + initOverrides, + ); + } + + /** + * Get authentication status: fully authenticated, activation pending and incomplete profile + * Get authentication status + */ + async getAuthStatusRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token('http-bearer', []); + + if (tokenString) { + headerParameters['Authorization'] = `Bearer ${tokenString}`; + } + } + const response = await this.request( + { + path: `/auth/status`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, + initOverrides, + ); + + return new runtime.JSONApiResponse(response); + } + + /** + * Get authentication status: fully authenticated, activation pending and incomplete profile + * Get authentication status + */ + async getAuthStatus( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.getAuthStatusRaw(initOverrides); + return await response.value(); + } + + /** + * Login with email and password and get bearer token for authentication + * Password Login + */ + async passwordLoginRaw( + requestParameters: PasswordLoginOperationRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + if ( + requestParameters.passwordLoginRequest === null || + requestParameters.passwordLoginRequest === undefined + ) { + throw new runtime.RequiredError( + 'passwordLoginRequest', + 'Required parameter requestParameters.passwordLoginRequest was null or undefined when calling passwordLogin.', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + const response = await this.request( + { + path: `/auth/login/password`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: requestParameters.passwordLoginRequest, + }, + initOverrides, + ); + + return new runtime.JSONApiResponse(response); + } + + /** + * Login with email and password and get bearer token for authentication + * Password Login + */ + async passwordLogin( + passwordLoginRequest: PasswordLoginRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.passwordLoginRaw( + { passwordLoginRequest: passwordLoginRequest }, + initOverrides, + ); + return await response.value(); + } + + /** + * Reset password using the token from password reset email + * Reset password + */ + async resetPasswordRaw( + requestParameters: ResetPasswordOperationRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + if ( + requestParameters.resetPasswordRequest === null || + requestParameters.resetPasswordRequest === undefined + ) { + throw new runtime.RequiredError( + 'resetPasswordRequest', + 'Required parameter requestParameters.resetPasswordRequest was null or undefined when calling resetPassword.', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + const response = await this.request( + { + path: `/auth/reset-password`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: requestParameters.resetPasswordRequest, + }, + initOverrides, + ); + + return new runtime.VoidApiResponse(response); + } + + /** + * Reset password using the token from password reset email + * Reset password + */ + async resetPassword( + resetPasswordRequest: ResetPasswordRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.resetPasswordRaw( + { resetPasswordRequest: resetPasswordRequest }, + initOverrides, + ); + } +} diff --git a/packages/client/src/apis/CodeApi.ts b/packages/client/src/apis/CodeApi.ts new file mode 100644 index 0000000..b9db2b5 --- /dev/null +++ b/packages/client/src/apis/CodeApi.ts @@ -0,0 +1,361 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * CodeCharacter API + * Specification of the CodeCharacter API + * + * The version of the OpenAPI document: 2024.0.1 + * Contact: delta@nitt.edu + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import * as runtime from '../runtime'; +import type { + Code, + CodeRevision, + CodeType, + CreateCodeRevisionRequest, + GenericError, + UpdateLatestCodeRequest, +} from '../models/index'; + +export interface CreateCodeRevisionOperationRequest { + createCodeRevisionRequest: CreateCodeRevisionRequest; +} + +export interface GetCodeRevisionsRequest { + type?: CodeType; +} + +export interface GetLatestCodeRequest { + type?: CodeType; +} + +export interface UpdateLatestCodeOperationRequest { + updateLatestCodeRequest: UpdateLatestCodeRequest; +} + +/** + * CodeApi - interface + * + * @export + * @interface CodeApiInterface + */ +export interface CodeApiInterface { + /** + * Create code revision + * @summary Create code revision + * @param {CreateCodeRevisionRequest} createCodeRevisionRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof CodeApiInterface + */ + createCodeRevisionRaw( + requestParameters: CreateCodeRevisionOperationRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>; + + /** + * Create code revision + * Create code revision + */ + createCodeRevision( + createCodeRevisionRequest: CreateCodeRevisionRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise; + + /** + * Get list of all code revision IDs + * @summary Get code revisions + * @param {CodeType} [type] code type + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof CodeApiInterface + */ + getCodeRevisionsRaw( + requestParameters: GetCodeRevisionsRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>>; + + /** + * Get list of all code revision IDs + * Get code revisions + */ + getCodeRevisions( + type?: CodeType, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>; + + /** + * Get latest code + * @summary Get latest code + * @param {CodeType} [type] code type + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof CodeApiInterface + */ + getLatestCodeRaw( + requestParameters: GetLatestCodeRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>; + + /** + * Get latest code + * Get latest code + */ + getLatestCode( + type?: CodeType, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise; + + /** + * Update latest code + * @summary Update latest code + * @param {UpdateLatestCodeRequest} updateLatestCodeRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof CodeApiInterface + */ + updateLatestCodeRaw( + requestParameters: UpdateLatestCodeOperationRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>; + + /** + * Update latest code + * Update latest code + */ + updateLatestCode( + updateLatestCodeRequest: UpdateLatestCodeRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise; +} + +/** + * + */ +export class CodeApi extends runtime.BaseAPI implements CodeApiInterface { + /** + * Create code revision + * Create code revision + */ + async createCodeRevisionRaw( + requestParameters: CreateCodeRevisionOperationRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + if ( + requestParameters.createCodeRevisionRequest === null || + requestParameters.createCodeRevisionRequest === undefined + ) { + throw new runtime.RequiredError( + 'createCodeRevisionRequest', + 'Required parameter requestParameters.createCodeRevisionRequest was null or undefined when calling createCodeRevision.', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token('http-bearer', []); + + if (tokenString) { + headerParameters['Authorization'] = `Bearer ${tokenString}`; + } + } + const response = await this.request( + { + path: `/user/code/revisions`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: requestParameters.createCodeRevisionRequest, + }, + initOverrides, + ); + + return new runtime.VoidApiResponse(response); + } + + /** + * Create code revision + * Create code revision + */ + async createCodeRevision( + createCodeRevisionRequest: CreateCodeRevisionRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.createCodeRevisionRaw( + { createCodeRevisionRequest: createCodeRevisionRequest }, + initOverrides, + ); + } + + /** + * Get list of all code revision IDs + * Get code revisions + */ + async getCodeRevisionsRaw( + requestParameters: GetCodeRevisionsRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const queryParameters: any = {}; + + if (requestParameters.type !== undefined) { + queryParameters['type'] = requestParameters.type; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token('http-bearer', []); + + if (tokenString) { + headerParameters['Authorization'] = `Bearer ${tokenString}`; + } + } + const response = await this.request( + { + path: `/user/code/revisions`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, + initOverrides, + ); + + return new runtime.JSONApiResponse(response); + } + + /** + * Get list of all code revision IDs + * Get code revisions + */ + async getCodeRevisions( + type?: CodeType, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.getCodeRevisionsRaw( + { type: type }, + initOverrides, + ); + return await response.value(); + } + + /** + * Get latest code + * Get latest code + */ + async getLatestCodeRaw( + requestParameters: GetLatestCodeRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const queryParameters: any = {}; + + if (requestParameters.type !== undefined) { + queryParameters['type'] = requestParameters.type; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token('http-bearer', []); + + if (tokenString) { + headerParameters['Authorization'] = `Bearer ${tokenString}`; + } + } + const response = await this.request( + { + path: `/user/code/latest`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, + initOverrides, + ); + + return new runtime.JSONApiResponse(response); + } + + /** + * Get latest code + * Get latest code + */ + async getLatestCode( + type?: CodeType, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.getLatestCodeRaw({ type: type }, initOverrides); + return await response.value(); + } + + /** + * Update latest code + * Update latest code + */ + async updateLatestCodeRaw( + requestParameters: UpdateLatestCodeOperationRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + if ( + requestParameters.updateLatestCodeRequest === null || + requestParameters.updateLatestCodeRequest === undefined + ) { + throw new runtime.RequiredError( + 'updateLatestCodeRequest', + 'Required parameter requestParameters.updateLatestCodeRequest was null or undefined when calling updateLatestCode.', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token('http-bearer', []); + + if (tokenString) { + headerParameters['Authorization'] = `Bearer ${tokenString}`; + } + } + const response = await this.request( + { + path: `/user/code/latest`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: requestParameters.updateLatestCodeRequest, + }, + initOverrides, + ); + + return new runtime.VoidApiResponse(response); + } + + /** + * Update latest code + * Update latest code + */ + async updateLatestCode( + updateLatestCodeRequest: UpdateLatestCodeRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.updateLatestCodeRaw( + { updateLatestCodeRequest: updateLatestCodeRequest }, + initOverrides, + ); + } +} diff --git a/packages/client/src/apis/CurrentUserApi.ts b/packages/client/src/apis/CurrentUserApi.ts new file mode 100644 index 0000000..7589b71 --- /dev/null +++ b/packages/client/src/apis/CurrentUserApi.ts @@ -0,0 +1,358 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * CodeCharacter API + * Specification of the CodeCharacter API + * + * The version of the OpenAPI document: 2024.0.1 + * Contact: delta@nitt.edu + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import * as runtime from '../runtime'; +import type { + CompleteProfileRequest, + CurrentUserProfile, + GenericError, + UpdateCurrentUserProfile, + UpdatePasswordRequest, +} from '../models/index'; + +export interface CompleteUserProfileRequest { + completeProfileRequest: CompleteProfileRequest; +} + +export interface UpdateCurrentUserRequest { + updateCurrentUserProfile: UpdateCurrentUserProfile; +} + +export interface UpdatePasswordOperationRequest { + updatePasswordRequest: UpdatePasswordRequest; +} + +/** + * CurrentUserApi - interface + * + * @export + * @interface CurrentUserApiInterface + */ +export interface CurrentUserApiInterface { + /** + * Complete the user profile for users who registered using OAuth + * @summary Complete user profile + * @param {CompleteProfileRequest} completeProfileRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof CurrentUserApiInterface + */ + completeUserProfileRaw( + requestParameters: CompleteUserProfileRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>; + + /** + * Complete the user profile for users who registered using OAuth + * Complete user profile + */ + completeUserProfile( + completeProfileRequest: CompleteProfileRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise; + + /** + * Get current user profile + * @summary Get current user profile + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof CurrentUserApiInterface + */ + getCurrentUserRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>; + + /** + * Get current user profile + * Get current user profile + */ + getCurrentUser( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise; + + /** + * Update current user + * @summary Update current user + * @param {UpdateCurrentUserProfile} updateCurrentUserProfile + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof CurrentUserApiInterface + */ + updateCurrentUserRaw( + requestParameters: UpdateCurrentUserRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>; + + /** + * Update current user + * Update current user + */ + updateCurrentUser( + updateCurrentUserProfile: UpdateCurrentUserProfile, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise; + + /** + * Update password + * @summary Update password + * @param {UpdatePasswordRequest} updatePasswordRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof CurrentUserApiInterface + */ + updatePasswordRaw( + requestParameters: UpdatePasswordOperationRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>; + + /** + * Update password + * Update password + */ + updatePassword( + updatePasswordRequest: UpdatePasswordRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise; +} + +/** + * + */ +export class CurrentUserApi + extends runtime.BaseAPI + implements CurrentUserApiInterface +{ + /** + * Complete the user profile for users who registered using OAuth + * Complete user profile + */ + async completeUserProfileRaw( + requestParameters: CompleteUserProfileRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + if ( + requestParameters.completeProfileRequest === null || + requestParameters.completeProfileRequest === undefined + ) { + throw new runtime.RequiredError( + 'completeProfileRequest', + 'Required parameter requestParameters.completeProfileRequest was null or undefined when calling completeUserProfile.', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token('http-bearer', []); + + if (tokenString) { + headerParameters['Authorization'] = `Bearer ${tokenString}`; + } + } + const response = await this.request( + { + path: `/user/complete-profile`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: requestParameters.completeProfileRequest, + }, + initOverrides, + ); + + return new runtime.VoidApiResponse(response); + } + + /** + * Complete the user profile for users who registered using OAuth + * Complete user profile + */ + async completeUserProfile( + completeProfileRequest: CompleteProfileRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.completeUserProfileRaw( + { completeProfileRequest: completeProfileRequest }, + initOverrides, + ); + } + + /** + * Get current user profile + * Get current user profile + */ + async getCurrentUserRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token('http-bearer', []); + + if (tokenString) { + headerParameters['Authorization'] = `Bearer ${tokenString}`; + } + } + const response = await this.request( + { + path: `/user`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, + initOverrides, + ); + + return new runtime.JSONApiResponse(response); + } + + /** + * Get current user profile + * Get current user profile + */ + async getCurrentUser( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.getCurrentUserRaw(initOverrides); + return await response.value(); + } + + /** + * Update current user + * Update current user + */ + async updateCurrentUserRaw( + requestParameters: UpdateCurrentUserRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + if ( + requestParameters.updateCurrentUserProfile === null || + requestParameters.updateCurrentUserProfile === undefined + ) { + throw new runtime.RequiredError( + 'updateCurrentUserProfile', + 'Required parameter requestParameters.updateCurrentUserProfile was null or undefined when calling updateCurrentUser.', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token('http-bearer', []); + + if (tokenString) { + headerParameters['Authorization'] = `Bearer ${tokenString}`; + } + } + const response = await this.request( + { + path: `/user`, + method: 'PATCH', + headers: headerParameters, + query: queryParameters, + body: requestParameters.updateCurrentUserProfile, + }, + initOverrides, + ); + + return new runtime.VoidApiResponse(response); + } + + /** + * Update current user + * Update current user + */ + async updateCurrentUser( + updateCurrentUserProfile: UpdateCurrentUserProfile, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.updateCurrentUserRaw( + { updateCurrentUserProfile: updateCurrentUserProfile }, + initOverrides, + ); + } + + /** + * Update password + * Update password + */ + async updatePasswordRaw( + requestParameters: UpdatePasswordOperationRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + if ( + requestParameters.updatePasswordRequest === null || + requestParameters.updatePasswordRequest === undefined + ) { + throw new runtime.RequiredError( + 'updatePasswordRequest', + 'Required parameter requestParameters.updatePasswordRequest was null or undefined when calling updatePassword.', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token('http-bearer', []); + + if (tokenString) { + headerParameters['Authorization'] = `Bearer ${tokenString}`; + } + } + const response = await this.request( + { + path: `/user/password`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: requestParameters.updatePasswordRequest, + }, + initOverrides, + ); + + return new runtime.VoidApiResponse(response); + } + + /** + * Update password + * Update password + */ + async updatePassword( + updatePasswordRequest: UpdatePasswordRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.updatePasswordRaw( + { updatePasswordRequest: updatePasswordRequest }, + initOverrides, + ); + } +} diff --git a/packages/client/src/apis/DailyChallengesApi.ts b/packages/client/src/apis/DailyChallengesApi.ts new file mode 100644 index 0000000..d039910 --- /dev/null +++ b/packages/client/src/apis/DailyChallengesApi.ts @@ -0,0 +1,358 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * CodeCharacter API + * Specification of the CodeCharacter API + * + * The version of the OpenAPI document: 2024.0.1 + * Contact: delta@nitt.edu + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import * as runtime from '../runtime'; +import type { + DailyChallengeGetRequest, + DailyChallengeLeaderBoardResponse, + DailyChallengeMatchRequest, + GenericError, + Match, +} from '../models/index'; + +export interface CreateDailyChallengeMatchRequest { + dailyChallengeMatchRequest: DailyChallengeMatchRequest; +} + +export interface GetDailyChallengeLeaderBoardRequest { + page?: number; + size?: number; +} + +export interface GetUserDCMatchesRequest { + page?: number; + size?: number; +} + +/** + * DailyChallengesApi - interface + * + * @export + * @interface DailyChallengesApiInterface + */ +export interface DailyChallengesApiInterface { + /** + * Match making for Daily Challenges + * @summary Match Execution for Daily Challenges + * @param {DailyChallengeMatchRequest} dailyChallengeMatchRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof DailyChallengesApiInterface + */ + createDailyChallengeMatchRaw( + requestParameters: CreateDailyChallengeMatchRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>; + + /** + * Match making for Daily Challenges + * Match Execution for Daily Challenges + */ + createDailyChallengeMatch( + dailyChallengeMatchRequest: DailyChallengeMatchRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise; + + /** + * Get current user challenge for that day + * @summary Get Daily Challenge for the day + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof DailyChallengesApiInterface + */ + getDailyChallengeRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>; + + /** + * Get current user challenge for that day + * Get Daily Challenge for the day + */ + getDailyChallenge( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise; + + /** + * Get Leaderboard for daily challenges + * @summary Get Daily Challenges Leaderboard + * @param {number} [page] Index of the page + * @param {number} [size] Size of the page + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof DailyChallengesApiInterface + */ + getDailyChallengeLeaderBoardRaw( + requestParameters: GetDailyChallengeLeaderBoardRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>>; + + /** + * Get Leaderboard for daily challenges + * Get Daily Challenges Leaderboard + */ + getDailyChallengeLeaderBoard( + page?: number, + size?: number, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>; + + /** + * Get daily-challenge matches played by authenticated user + * @summary Get user daily challenge matches + * @param {number} [page] Index of the page + * @param {number} [size] Size of the page + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof DailyChallengesApiInterface + */ + getUserDCMatchesRaw( + requestParameters: GetUserDCMatchesRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>>; + + /** + * Get daily-challenge matches played by authenticated user + * Get user daily challenge matches + */ + getUserDCMatches( + page?: number, + size?: number, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>; +} + +/** + * + */ +export class DailyChallengesApi + extends runtime.BaseAPI + implements DailyChallengesApiInterface +{ + /** + * Match making for Daily Challenges + * Match Execution for Daily Challenges + */ + async createDailyChallengeMatchRaw( + requestParameters: CreateDailyChallengeMatchRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + if ( + requestParameters.dailyChallengeMatchRequest === null || + requestParameters.dailyChallengeMatchRequest === undefined + ) { + throw new runtime.RequiredError( + 'dailyChallengeMatchRequest', + 'Required parameter requestParameters.dailyChallengeMatchRequest was null or undefined when calling createDailyChallengeMatch.', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token('http-bearer', []); + + if (tokenString) { + headerParameters['Authorization'] = `Bearer ${tokenString}`; + } + } + const response = await this.request( + { + path: `/dc/submit`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: requestParameters.dailyChallengeMatchRequest, + }, + initOverrides, + ); + + return new runtime.VoidApiResponse(response); + } + + /** + * Match making for Daily Challenges + * Match Execution for Daily Challenges + */ + async createDailyChallengeMatch( + dailyChallengeMatchRequest: DailyChallengeMatchRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.createDailyChallengeMatchRaw( + { dailyChallengeMatchRequest: dailyChallengeMatchRequest }, + initOverrides, + ); + } + + /** + * Get current user challenge for that day + * Get Daily Challenge for the day + */ + async getDailyChallengeRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token('http-bearer', []); + + if (tokenString) { + headerParameters['Authorization'] = `Bearer ${tokenString}`; + } + } + const response = await this.request( + { + path: `/dc/get`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, + initOverrides, + ); + + return new runtime.JSONApiResponse(response); + } + + /** + * Get current user challenge for that day + * Get Daily Challenge for the day + */ + async getDailyChallenge( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.getDailyChallengeRaw(initOverrides); + return await response.value(); + } + + /** + * Get Leaderboard for daily challenges + * Get Daily Challenges Leaderboard + */ + async getDailyChallengeLeaderBoardRaw( + requestParameters: GetDailyChallengeLeaderBoardRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const queryParameters: any = {}; + + if (requestParameters.page !== undefined) { + queryParameters['page'] = requestParameters.page; + } + + if (requestParameters.size !== undefined) { + queryParameters['size'] = requestParameters.size; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token('http-bearer', []); + + if (tokenString) { + headerParameters['Authorization'] = `Bearer ${tokenString}`; + } + } + const response = await this.request( + { + path: `/dc/leaderboard`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, + initOverrides, + ); + + return new runtime.JSONApiResponse(response); + } + + /** + * Get Leaderboard for daily challenges + * Get Daily Challenges Leaderboard + */ + async getDailyChallengeLeaderBoard( + page?: number, + size?: number, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.getDailyChallengeLeaderBoardRaw( + { page: page, size: size }, + initOverrides, + ); + return await response.value(); + } + + /** + * Get daily-challenge matches played by authenticated user + * Get user daily challenge matches + */ + async getUserDCMatchesRaw( + requestParameters: GetUserDCMatchesRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const queryParameters: any = {}; + + if (requestParameters.page !== undefined) { + queryParameters['page'] = requestParameters.page; + } + + if (requestParameters.size !== undefined) { + queryParameters['size'] = requestParameters.size; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token('http-bearer', []); + + if (tokenString) { + headerParameters['Authorization'] = `Bearer ${tokenString}`; + } + } + const response = await this.request( + { + path: `/dc/matches`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, + initOverrides, + ); + + return new runtime.JSONApiResponse(response); + } + + /** + * Get daily-challenge matches played by authenticated user + * Get user daily challenge matches + */ + async getUserDCMatches( + page?: number, + size?: number, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.getUserDCMatchesRaw( + { page: page, size: size }, + initOverrides, + ); + return await response.value(); + } +} diff --git a/packages/client/src/apis/GameApi.ts b/packages/client/src/apis/GameApi.ts new file mode 100644 index 0000000..75e567d --- /dev/null +++ b/packages/client/src/apis/GameApi.ts @@ -0,0 +1,119 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * CodeCharacter API + * Specification of the CodeCharacter API + * + * The version of the OpenAPI document: 2024.0.1 + * Contact: delta@nitt.edu + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import * as runtime from '../runtime'; + +export interface GetGameLogsByGameIdRequest { + gameId: string; +} + +/** + * GameApi - interface + * + * @export + * @interface GameApiInterface + */ +export interface GameApiInterface { + /** + * Get game logs by game ID + * @summary Get game logs by game ID + * @param {string} gameId UUID of the game + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof GameApiInterface + */ + getGameLogsByGameIdRaw( + requestParameters: GetGameLogsByGameIdRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>; + + /** + * Get game logs by game ID + * Get game logs by game ID + */ + getGameLogsByGameId( + gameId: string, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise; +} + +/** + * + */ +export class GameApi extends runtime.BaseAPI implements GameApiInterface { + /** + * Get game logs by game ID + * Get game logs by game ID + */ + async getGameLogsByGameIdRaw( + requestParameters: GetGameLogsByGameIdRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + if ( + requestParameters.gameId === null || + requestParameters.gameId === undefined + ) { + throw new runtime.RequiredError( + 'gameId', + 'Required parameter requestParameters.gameId was null or undefined when calling getGameLogsByGameId.', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token('http-bearer', []); + + if (tokenString) { + headerParameters['Authorization'] = `Bearer ${tokenString}`; + } + } + const response = await this.request( + { + path: `/games/{gameId}/logs`.replace( + `{${'gameId'}}`, + encodeURIComponent(String(requestParameters.gameId)), + ), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, + initOverrides, + ); + + if (this.isJsonMime(response.headers.get('content-type'))) { + return new runtime.JSONApiResponse(response); + } else { + return new runtime.TextApiResponse(response) as any; + } + } + + /** + * Get game logs by game ID + * Get game logs by game ID + */ + async getGameLogsByGameId( + gameId: string, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.getGameLogsByGameIdRaw( + { gameId: gameId }, + initOverrides, + ); + return await response.value(); + } +} diff --git a/packages/client/src/apis/LeaderboardApi.ts b/packages/client/src/apis/LeaderboardApi.ts new file mode 100644 index 0000000..ec42555 --- /dev/null +++ b/packages/client/src/apis/LeaderboardApi.ts @@ -0,0 +1,216 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * CodeCharacter API + * Specification of the CodeCharacter API + * + * The version of the OpenAPI document: 2024.0.1 + * Contact: delta@nitt.edu + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import * as runtime from '../runtime'; +import type { + LeaderboardEntry, + PvPLeaderBoardResponse, + TierType, +} from '../models/index'; + +export interface GetLeaderboardRequest { + page?: number; + size?: number; + tier?: TierType; +} + +export interface GetPvPLeaderboardRequest { + page?: number; + size?: number; +} + +/** + * LeaderboardApi - interface + * + * @export + * @interface LeaderboardApiInterface + */ +export interface LeaderboardApiInterface { + /** + * Get leaderboard + * @summary Get leaderboard + * @param {number} [page] Index of the page + * @param {number} [size] Size of the page + * @param {TierType} [tier] Leaderboard Tier + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof LeaderboardApiInterface + */ + getLeaderboardRaw( + requestParameters: GetLeaderboardRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>>; + + /** + * Get leaderboard + * Get leaderboard + */ + getLeaderboard( + page?: number, + size?: number, + tier?: TierType, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>; + + /** + * Get PvP leaderboard + * @summary Get PvP leaderboard + * @param {number} [page] Index of the page + * @param {number} [size] Size of the page + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof LeaderboardApiInterface + */ + getPvPLeaderboardRaw( + requestParameters: GetPvPLeaderboardRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>>; + + /** + * Get PvP leaderboard + * Get PvP leaderboard + */ + getPvPLeaderboard( + page?: number, + size?: number, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>; +} + +/** + * + */ +export class LeaderboardApi + extends runtime.BaseAPI + implements LeaderboardApiInterface +{ + /** + * Get leaderboard + * Get leaderboard + */ + async getLeaderboardRaw( + requestParameters: GetLeaderboardRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const queryParameters: any = {}; + + if (requestParameters.page !== undefined) { + queryParameters['page'] = requestParameters.page; + } + + if (requestParameters.size !== undefined) { + queryParameters['size'] = requestParameters.size; + } + + if (requestParameters.tier !== undefined) { + queryParameters['tier'] = requestParameters.tier; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token('http-bearer', []); + + if (tokenString) { + headerParameters['Authorization'] = `Bearer ${tokenString}`; + } + } + const response = await this.request( + { + path: `/leaderboard`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, + initOverrides, + ); + + return new runtime.JSONApiResponse(response); + } + + /** + * Get leaderboard + * Get leaderboard + */ + async getLeaderboard( + page?: number, + size?: number, + tier?: TierType, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.getLeaderboardRaw( + { page: page, size: size, tier: tier }, + initOverrides, + ); + return await response.value(); + } + + /** + * Get PvP leaderboard + * Get PvP leaderboard + */ + async getPvPLeaderboardRaw( + requestParameters: GetPvPLeaderboardRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const queryParameters: any = {}; + + if (requestParameters.page !== undefined) { + queryParameters['page'] = requestParameters.page; + } + + if (requestParameters.size !== undefined) { + queryParameters['size'] = requestParameters.size; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token('http-bearer', []); + + if (tokenString) { + headerParameters['Authorization'] = `Bearer ${tokenString}`; + } + } + const response = await this.request( + { + path: `/pvpleaderboard`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, + initOverrides, + ); + + return new runtime.JSONApiResponse(response); + } + + /** + * Get PvP leaderboard + * Get PvP leaderboard + */ + async getPvPLeaderboard( + page?: number, + size?: number, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.getPvPLeaderboardRaw( + { page: page, size: size }, + initOverrides, + ); + return await response.value(); + } +} diff --git a/packages/client/src/apis/MapApi.ts b/packages/client/src/apis/MapApi.ts new file mode 100644 index 0000000..d038e6e --- /dev/null +++ b/packages/client/src/apis/MapApi.ts @@ -0,0 +1,446 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * CodeCharacter API + * Specification of the CodeCharacter API + * + * The version of the OpenAPI document: 2024.0.1 + * Contact: delta@nitt.edu + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import * as runtime from '../runtime'; +import type { + CreateMapRevisionRequest, + GameMap, + GameMapRevision, + GameMapType, + GenericError, + MapCommitByCommitIdResponse, + UpdateLatestMapRequest, +} from '../models/index'; + +export interface CreateMapRevisionOperationRequest { + createMapRevisionRequest: CreateMapRevisionRequest; +} + +export interface GetLatestMapRequest { + type?: GameMapType; +} + +export interface GetMapByCommitIDRequest { + commitId: string; +} + +export interface GetMapRevisionsRequest { + type?: GameMapType; +} + +export interface UpdateLatestMapOperationRequest { + updateLatestMapRequest: UpdateLatestMapRequest; +} + +/** + * MapApi - interface + * + * @export + * @interface MapApiInterface + */ +export interface MapApiInterface { + /** + * Create map revision + * @summary Create map revision + * @param {CreateMapRevisionRequest} createMapRevisionRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof MapApiInterface + */ + createMapRevisionRaw( + requestParameters: CreateMapRevisionOperationRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>; + + /** + * Create map revision + * Create map revision + */ + createMapRevision( + createMapRevisionRequest: CreateMapRevisionRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise; + + /** + * Get latest map + * @summary Get latest map + * @param {GameMapType} [type] map type + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof MapApiInterface + */ + getLatestMapRaw( + requestParameters: GetLatestMapRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>; + + /** + * Get latest map + * Get latest map + */ + getLatestMap( + type?: GameMapType, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise; + + /** + * + * @summary Get the Map and image of the commit ID + * @param {string} commitId + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof MapApiInterface + */ + getMapByCommitIDRaw( + requestParameters: GetMapByCommitIDRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>; + + /** + * Get the Map and image of the commit ID + */ + getMapByCommitID( + commitId: string, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise; + + /** + * Get list of all map revision IDs + * @summary Get map revisions + * @param {GameMapType} [type] map type + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof MapApiInterface + */ + getMapRevisionsRaw( + requestParameters: GetMapRevisionsRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>>; + + /** + * Get list of all map revision IDs + * Get map revisions + */ + getMapRevisions( + type?: GameMapType, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>; + + /** + * Update latest map + * @summary Update latest map + * @param {UpdateLatestMapRequest} updateLatestMapRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof MapApiInterface + */ + updateLatestMapRaw( + requestParameters: UpdateLatestMapOperationRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>; + + /** + * Update latest map + * Update latest map + */ + updateLatestMap( + updateLatestMapRequest: UpdateLatestMapRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise; +} + +/** + * + */ +export class MapApi extends runtime.BaseAPI implements MapApiInterface { + /** + * Create map revision + * Create map revision + */ + async createMapRevisionRaw( + requestParameters: CreateMapRevisionOperationRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + if ( + requestParameters.createMapRevisionRequest === null || + requestParameters.createMapRevisionRequest === undefined + ) { + throw new runtime.RequiredError( + 'createMapRevisionRequest', + 'Required parameter requestParameters.createMapRevisionRequest was null or undefined when calling createMapRevision.', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token('http-bearer', []); + + if (tokenString) { + headerParameters['Authorization'] = `Bearer ${tokenString}`; + } + } + const response = await this.request( + { + path: `/user/map/revisions`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: requestParameters.createMapRevisionRequest, + }, + initOverrides, + ); + + return new runtime.VoidApiResponse(response); + } + + /** + * Create map revision + * Create map revision + */ + async createMapRevision( + createMapRevisionRequest: CreateMapRevisionRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.createMapRevisionRaw( + { createMapRevisionRequest: createMapRevisionRequest }, + initOverrides, + ); + } + + /** + * Get latest map + * Get latest map + */ + async getLatestMapRaw( + requestParameters: GetLatestMapRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const queryParameters: any = {}; + + if (requestParameters.type !== undefined) { + queryParameters['type'] = requestParameters.type; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token('http-bearer', []); + + if (tokenString) { + headerParameters['Authorization'] = `Bearer ${tokenString}`; + } + } + const response = await this.request( + { + path: `/user/map/latest`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, + initOverrides, + ); + + return new runtime.JSONApiResponse(response); + } + + /** + * Get latest map + * Get latest map + */ + async getLatestMap( + type?: GameMapType, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.getLatestMapRaw({ type: type }, initOverrides); + return await response.value(); + } + + /** + * Get the Map and image of the commit ID + */ + async getMapByCommitIDRaw( + requestParameters: GetMapByCommitIDRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + if ( + requestParameters.commitId === null || + requestParameters.commitId === undefined + ) { + throw new runtime.RequiredError( + 'commitId', + 'Required parameter requestParameters.commitId was null or undefined when calling getMapByCommitID.', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token('http-bearer', []); + + if (tokenString) { + headerParameters['Authorization'] = `Bearer ${tokenString}`; + } + } + const response = await this.request( + { + path: `/user/map/revision/{commitId}`.replace( + `{${'commitId'}}`, + encodeURIComponent(String(requestParameters.commitId)), + ), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, + initOverrides, + ); + + return new runtime.JSONApiResponse(response); + } + + /** + * Get the Map and image of the commit ID + */ + async getMapByCommitID( + commitId: string, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.getMapByCommitIDRaw( + { commitId: commitId }, + initOverrides, + ); + return await response.value(); + } + + /** + * Get list of all map revision IDs + * Get map revisions + */ + async getMapRevisionsRaw( + requestParameters: GetMapRevisionsRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const queryParameters: any = {}; + + if (requestParameters.type !== undefined) { + queryParameters['type'] = requestParameters.type; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token('http-bearer', []); + + if (tokenString) { + headerParameters['Authorization'] = `Bearer ${tokenString}`; + } + } + const response = await this.request( + { + path: `/user/map/revisions`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, + initOverrides, + ); + + return new runtime.JSONApiResponse(response); + } + + /** + * Get list of all map revision IDs + * Get map revisions + */ + async getMapRevisions( + type?: GameMapType, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.getMapRevisionsRaw( + { type: type }, + initOverrides, + ); + return await response.value(); + } + + /** + * Update latest map + * Update latest map + */ + async updateLatestMapRaw( + requestParameters: UpdateLatestMapOperationRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + if ( + requestParameters.updateLatestMapRequest === null || + requestParameters.updateLatestMapRequest === undefined + ) { + throw new runtime.RequiredError( + 'updateLatestMapRequest', + 'Required parameter requestParameters.updateLatestMapRequest was null or undefined when calling updateLatestMap.', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token('http-bearer', []); + + if (tokenString) { + headerParameters['Authorization'] = `Bearer ${tokenString}`; + } + } + const response = await this.request( + { + path: `/user/map/latest`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: requestParameters.updateLatestMapRequest, + }, + initOverrides, + ); + + return new runtime.VoidApiResponse(response); + } + + /** + * Update latest map + * Update latest map + */ + async updateLatestMap( + updateLatestMapRequest: UpdateLatestMapRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.updateLatestMapRaw( + { updateLatestMapRequest: updateLatestMapRequest }, + initOverrides, + ); + } +} diff --git a/packages/client/src/apis/MatchApi.ts b/packages/client/src/apis/MatchApi.ts new file mode 100644 index 0000000..483d6e0 --- /dev/null +++ b/packages/client/src/apis/MatchApi.ts @@ -0,0 +1,354 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * CodeCharacter API + * Specification of the CodeCharacter API + * + * The version of the OpenAPI document: 2024.0.1 + * Contact: delta@nitt.edu + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import * as runtime from '../runtime'; +import type { + CreateMatchRequest, + GenericError, + Match, + PvPMatch, +} from '../models/index'; + +export interface CreateMatchOperationRequest { + createMatchRequest: CreateMatchRequest; +} + +export interface GetUserNormalMatchesRequest { + page?: number; + size?: number; +} + +export interface GetUserPvPMatchesRequest { + page?: number; + size?: number; +} + +/** + * MatchApi - interface + * + * @export + * @interface MatchApiInterface + */ +export interface MatchApiInterface { + /** + * Initiate a match by current user + * @summary Create match + * @param {CreateMatchRequest} createMatchRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof MatchApiInterface + */ + createMatchRaw( + requestParameters: CreateMatchOperationRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>; + + /** + * Initiate a match by current user + * Create match + */ + createMatch( + createMatchRequest: CreateMatchRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise; + + /** + * Get top matches + * @summary Get top matches + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof MatchApiInterface + */ + getTopMatchesRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>>; + + /** + * Get top matches + * Get top matches + */ + getTopMatches( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>; + + /** + * Get normal matches played by authenticated user + * @summary Get user matches + * @param {number} [page] Index of the page + * @param {number} [size] Size of the page + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof MatchApiInterface + */ + getUserNormalMatchesRaw( + requestParameters: GetUserNormalMatchesRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>>; + + /** + * Get normal matches played by authenticated user + * Get user matches + */ + getUserNormalMatches( + page?: number, + size?: number, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>; + + /** + * Get pvp matches played by authenticated user + * @summary Get user pvp matches + * @param {number} [page] Index of the page + * @param {number} [size] Size of the page + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof MatchApiInterface + */ + getUserPvPMatchesRaw( + requestParameters: GetUserPvPMatchesRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>>; + + /** + * Get pvp matches played by authenticated user + * Get user pvp matches + */ + getUserPvPMatches( + page?: number, + size?: number, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>; +} + +/** + * + */ +export class MatchApi extends runtime.BaseAPI implements MatchApiInterface { + /** + * Initiate a match by current user + * Create match + */ + async createMatchRaw( + requestParameters: CreateMatchOperationRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + if ( + requestParameters.createMatchRequest === null || + requestParameters.createMatchRequest === undefined + ) { + throw new runtime.RequiredError( + 'createMatchRequest', + 'Required parameter requestParameters.createMatchRequest was null or undefined when calling createMatch.', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token('http-bearer', []); + + if (tokenString) { + headerParameters['Authorization'] = `Bearer ${tokenString}`; + } + } + const response = await this.request( + { + path: `/user/matches`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: requestParameters.createMatchRequest, + }, + initOverrides, + ); + + return new runtime.VoidApiResponse(response); + } + + /** + * Initiate a match by current user + * Create match + */ + async createMatch( + createMatchRequest: CreateMatchRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.createMatchRaw( + { createMatchRequest: createMatchRequest }, + initOverrides, + ); + } + + /** + * Get top matches + * Get top matches + */ + async getTopMatchesRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token('http-bearer', []); + + if (tokenString) { + headerParameters['Authorization'] = `Bearer ${tokenString}`; + } + } + const response = await this.request( + { + path: `/top-matches`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, + initOverrides, + ); + + return new runtime.JSONApiResponse(response); + } + + /** + * Get top matches + * Get top matches + */ + async getTopMatches( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.getTopMatchesRaw(initOverrides); + return await response.value(); + } + + /** + * Get normal matches played by authenticated user + * Get user matches + */ + async getUserNormalMatchesRaw( + requestParameters: GetUserNormalMatchesRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const queryParameters: any = {}; + + if (requestParameters.page !== undefined) { + queryParameters['page'] = requestParameters.page; + } + + if (requestParameters.size !== undefined) { + queryParameters['size'] = requestParameters.size; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token('http-bearer', []); + + if (tokenString) { + headerParameters['Authorization'] = `Bearer ${tokenString}`; + } + } + const response = await this.request( + { + path: `/user/matches`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, + initOverrides, + ); + + return new runtime.JSONApiResponse(response); + } + + /** + * Get normal matches played by authenticated user + * Get user matches + */ + async getUserNormalMatches( + page?: number, + size?: number, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.getUserNormalMatchesRaw( + { page: page, size: size }, + initOverrides, + ); + return await response.value(); + } + + /** + * Get pvp matches played by authenticated user + * Get user pvp matches + */ + async getUserPvPMatchesRaw( + requestParameters: GetUserPvPMatchesRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const queryParameters: any = {}; + + if (requestParameters.page !== undefined) { + queryParameters['page'] = requestParameters.page; + } + + if (requestParameters.size !== undefined) { + queryParameters['size'] = requestParameters.size; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token('http-bearer', []); + + if (tokenString) { + headerParameters['Authorization'] = `Bearer ${tokenString}`; + } + } + const response = await this.request( + { + path: `/user/pvpmatches`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, + initOverrides, + ); + + return new runtime.JSONApiResponse(response); + } + + /** + * Get pvp matches played by authenticated user + * Get user pvp matches + */ + async getUserPvPMatches( + page?: number, + size?: number, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.getUserPvPMatchesRaw( + { page: page, size: size }, + initOverrides, + ); + return await response.value(); + } +} diff --git a/packages/client/src/apis/NotificationApi.ts b/packages/client/src/apis/NotificationApi.ts new file mode 100644 index 0000000..51b05ac --- /dev/null +++ b/packages/client/src/apis/NotificationApi.ts @@ -0,0 +1,197 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * CodeCharacter API + * Specification of the CodeCharacter API + * + * The version of the OpenAPI document: 2024.0.1 + * Contact: delta@nitt.edu + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import * as runtime from '../runtime'; +import type { GenericError, Notification } from '../models/index'; + +export interface SaveNotificationReadStatusRequest { + notificationId: string; + body: boolean; +} + +/** + * NotificationApi - interface + * + * @export + * @interface NotificationApiInterface + */ +export interface NotificationApiInterface { + /** + * Get all notifications + * @summary Get all notifications + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof NotificationApiInterface + */ + getAllNotificationsRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>>; + + /** + * Get all notifications + * Get all notifications + */ + getAllNotifications( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>; + + /** + * Save notification read status + * @summary Save notification read status + * @param {string} notificationId ID of the notification + * @param {boolean} body + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof NotificationApiInterface + */ + saveNotificationReadStatusRaw( + requestParameters: SaveNotificationReadStatusRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>; + + /** + * Save notification read status + * Save notification read status + */ + saveNotificationReadStatus( + notificationId: string, + body: boolean, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise; +} + +/** + * + */ +export class NotificationApi + extends runtime.BaseAPI + implements NotificationApiInterface +{ + /** + * Get all notifications + * Get all notifications + */ + async getAllNotificationsRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token('http-bearer', []); + + if (tokenString) { + headerParameters['Authorization'] = `Bearer ${tokenString}`; + } + } + const response = await this.request( + { + path: `/user/notifications`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, + initOverrides, + ); + + return new runtime.JSONApiResponse(response); + } + + /** + * Get all notifications + * Get all notifications + */ + async getAllNotifications( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.getAllNotificationsRaw(initOverrides); + return await response.value(); + } + + /** + * Save notification read status + * Save notification read status + */ + async saveNotificationReadStatusRaw( + requestParameters: SaveNotificationReadStatusRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + if ( + requestParameters.notificationId === null || + requestParameters.notificationId === undefined + ) { + throw new runtime.RequiredError( + 'notificationId', + 'Required parameter requestParameters.notificationId was null or undefined when calling saveNotificationReadStatus.', + ); + } + + if ( + requestParameters.body === null || + requestParameters.body === undefined + ) { + throw new runtime.RequiredError( + 'body', + 'Required parameter requestParameters.body was null or undefined when calling saveNotificationReadStatus.', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token('http-bearer', []); + + if (tokenString) { + headerParameters['Authorization'] = `Bearer ${tokenString}`; + } + } + const response = await this.request( + { + path: `/user/notifications/{notificationId}/read`.replace( + `{${'notificationId'}}`, + encodeURIComponent(String(requestParameters.notificationId)), + ), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: requestParameters.body as any, + }, + initOverrides, + ); + + return new runtime.VoidApiResponse(response); + } + + /** + * Save notification read status + * Save notification read status + */ + async saveNotificationReadStatus( + notificationId: string, + body: boolean, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.saveNotificationReadStatusRaw( + { notificationId: notificationId, body: body }, + initOverrides, + ); + } +} diff --git a/packages/client/src/apis/PvpGameApi.ts b/packages/client/src/apis/PvpGameApi.ts index 8a5261d..b0e3848 100644 --- a/packages/client/src/apis/PvpGameApi.ts +++ b/packages/client/src/apis/PvpGameApi.ts @@ -95,7 +95,11 @@ export class PvpGameApi extends runtime.BaseAPI implements PvpGameApiInterface { initOverrides, ); - return new runtime.TextApiResponse(response) as any; + if (this.isJsonMime(response.headers.get('content-type'))) { + return new runtime.JSONApiResponse(response); + } else { + return new runtime.TextApiResponse(response) as any; + } } /** diff --git a/packages/client/src/apis/StatsApi.ts b/packages/client/src/apis/StatsApi.ts new file mode 100644 index 0000000..1439f3d --- /dev/null +++ b/packages/client/src/apis/StatsApi.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * CodeCharacter API + * Specification of the CodeCharacter API + * + * The version of the OpenAPI document: 2024.0.1 + * Contact: delta@nitt.edu + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import * as runtime from '../runtime'; +import type { UserMatchStats } from '../models/index'; + +/** + * StatsApi - interface + * + * @export + * @interface StatsApiInterface + */ +export interface StatsApiInterface { + /** + * Gets all statistics for the current user + * @summary Get all General Stats for current user and top user + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof StatsApiInterface + */ + getStatsRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>>; + + /** + * Gets all statistics for the current user + * Get all General Stats for current user and top user + */ + getStats( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>; +} + +/** + * + */ +export class StatsApi extends runtime.BaseAPI implements StatsApiInterface { + /** + * Gets all statistics for the current user + * Get all General Stats for current user and top user + */ + async getStatsRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token('http-bearer', []); + + if (tokenString) { + headerParameters['Authorization'] = `Bearer ${tokenString}`; + } + } + const response = await this.request( + { + path: `/stats/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, + initOverrides, + ); + + return new runtime.JSONApiResponse(response); + } + + /** + * Gets all statistics for the current user + * Get all General Stats for current user and top user + */ + async getStats( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.getStatsRaw(initOverrides); + return await response.value(); + } +} diff --git a/packages/client/src/apis/UserApi.ts b/packages/client/src/apis/UserApi.ts new file mode 100644 index 0000000..356f1c9 --- /dev/null +++ b/packages/client/src/apis/UserApi.ts @@ -0,0 +1,294 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * CodeCharacter API + * Specification of the CodeCharacter API + * + * The version of the OpenAPI document: 2024.0.1 + * Contact: delta@nitt.edu + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import * as runtime from '../runtime'; +import type { + ActivateUserRequest, + GenericError, + RatingHistory, + RegisterUserRequest, +} from '../models/index'; + +export interface ActivateUserOperationRequest { + userId: string; + activateUserRequest: ActivateUserRequest; +} + +export interface GetRatingHistoryRequest { + userId: string; +} + +export interface RegisterRequest { + registerUserRequest: RegisterUserRequest; +} + +/** + * UserApi - interface + * + * @export + * @interface UserApiInterface + */ +export interface UserApiInterface { + /** + * Activate user by using the token sent via email + * @summary Activate user + * @param {string} userId ID of the user + * @param {ActivateUserRequest} activateUserRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof UserApiInterface + */ + activateUserRaw( + requestParameters: ActivateUserOperationRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>; + + /** + * Activate user by using the token sent via email + * Activate user + */ + activateUser( + userId: string, + activateUserRequest: ActivateUserRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise; + + /** + * Get user rating history + * @summary Get user rating history + * @param {string} userId ID of the user + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof UserApiInterface + */ + getRatingHistoryRaw( + requestParameters: GetRatingHistoryRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>>; + + /** + * Get user rating history + * Get user rating history + */ + getRatingHistory( + userId: string, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>; + + /** + * Register user + * @summary Register user + * @param {RegisterUserRequest} registerUserRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof UserApiInterface + */ + registerRaw( + requestParameters: RegisterRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>; + + /** + * Register user + * Register user + */ + register( + registerUserRequest: RegisterUserRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise; +} + +/** + * + */ +export class UserApi extends runtime.BaseAPI implements UserApiInterface { + /** + * Activate user by using the token sent via email + * Activate user + */ + async activateUserRaw( + requestParameters: ActivateUserOperationRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + if ( + requestParameters.userId === null || + requestParameters.userId === undefined + ) { + throw new runtime.RequiredError( + 'userId', + 'Required parameter requestParameters.userId was null or undefined when calling activateUser.', + ); + } + + if ( + requestParameters.activateUserRequest === null || + requestParameters.activateUserRequest === undefined + ) { + throw new runtime.RequiredError( + 'activateUserRequest', + 'Required parameter requestParameters.activateUserRequest was null or undefined when calling activateUser.', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + const response = await this.request( + { + path: `/users/{userId}/activate`.replace( + `{${'userId'}}`, + encodeURIComponent(String(requestParameters.userId)), + ), + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: requestParameters.activateUserRequest, + }, + initOverrides, + ); + + return new runtime.VoidApiResponse(response); + } + + /** + * Activate user by using the token sent via email + * Activate user + */ + async activateUser( + userId: string, + activateUserRequest: ActivateUserRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.activateUserRaw( + { userId: userId, activateUserRequest: activateUserRequest }, + initOverrides, + ); + } + + /** + * Get user rating history + * Get user rating history + */ + async getRatingHistoryRaw( + requestParameters: GetRatingHistoryRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + if ( + requestParameters.userId === null || + requestParameters.userId === undefined + ) { + throw new runtime.RequiredError( + 'userId', + 'Required parameter requestParameters.userId was null or undefined when calling getRatingHistory.', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token('http-bearer', []); + + if (tokenString) { + headerParameters['Authorization'] = `Bearer ${tokenString}`; + } + } + const response = await this.request( + { + path: `/users/{userId}/ratingHistory`.replace( + `{${'userId'}}`, + encodeURIComponent(String(requestParameters.userId)), + ), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, + initOverrides, + ); + + return new runtime.JSONApiResponse(response); + } + + /** + * Get user rating history + * Get user rating history + */ + async getRatingHistory( + userId: string, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.getRatingHistoryRaw( + { userId: userId }, + initOverrides, + ); + return await response.value(); + } + + /** + * Register user + * Register user + */ + async registerRaw( + requestParameters: RegisterRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + if ( + requestParameters.registerUserRequest === null || + requestParameters.registerUserRequest === undefined + ) { + throw new runtime.RequiredError( + 'registerUserRequest', + 'Required parameter requestParameters.registerUserRequest was null or undefined when calling register.', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + const response = await this.request( + { + path: `/users`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: requestParameters.registerUserRequest, + }, + initOverrides, + ); + + return new runtime.VoidApiResponse(response); + } + + /** + * Register user + * Register user + */ + async register( + registerUserRequest: RegisterUserRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.registerRaw( + { registerUserRequest: registerUserRequest }, + initOverrides, + ); + } +} diff --git a/packages/client/src/apis/index.ts b/packages/client/src/apis/index.ts new file mode 100644 index 0000000..71d785d --- /dev/null +++ b/packages/client/src/apis/index.ts @@ -0,0 +1,14 @@ +/* tslint:disable */ +/* eslint-disable */ +export * from './AuthApi'; +export * from './CodeApi'; +export * from './CurrentUserApi'; +export * from './DailyChallengesApi'; +export * from './GameApi'; +export * from './LeaderboardApi'; +export * from './MapApi'; +export * from './MatchApi'; +export * from './NotificationApi'; +export * from './PvpGameApi'; +export * from './StatsApi'; +export * from './UserApi'; diff --git a/packages/client/src/index.ts b/packages/client/src/index.ts new file mode 100644 index 0000000..bebe8bb --- /dev/null +++ b/packages/client/src/index.ts @@ -0,0 +1,5 @@ +/* tslint:disable */ +/* eslint-disable */ +export * from './runtime'; +export * from './apis/index'; +export * from './models/index'; diff --git a/packages/client/src/models/index.ts b/packages/client/src/models/index.ts new file mode 100644 index 0000000..5fc4643 --- /dev/null +++ b/packages/client/src/models/index.ts @@ -0,0 +1,1309 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Activate user request + * @export + * @interface ActivateUserRequest + */ +export interface ActivateUserRequest { + /** + * + * @type {string} + * @memberof ActivateUserRequest + */ + token: string; +} +/** + * + * @export + * @interface AuthStatusResponse + */ +export interface AuthStatusResponse { + /** + * + * @type {string} + * @memberof AuthStatusResponse + */ + status?: AuthStatusResponseStatusEnum; +} + +/** + * @export + */ +export const AuthStatusResponseStatusEnum = { + Authenticated: 'AUTHENTICATED', + ProfileIncomplete: 'PROFILE_INCOMPLETE', + ActivationPending: 'ACTIVATION_PENDING', +} as const; +export type AuthStatusResponseStatusEnum = + (typeof AuthStatusResponseStatusEnum)[keyof typeof AuthStatusResponseStatusEnum]; + +/** + * + * @export + */ +export const ChallengeType = { + Code: 'CODE', + Map: 'MAP', +} as const; +export type ChallengeType = (typeof ChallengeType)[keyof typeof ChallengeType]; + +/** + * Code model + * @export + * @interface Code + */ +export interface Code { + /** + * + * @type {string} + * @memberof Code + */ + code: string; + /** + * + * @type {string} + * @memberof Code + */ + lastSavedAt: string; + /** + * + * @type {Language} + * @memberof Code + */ + language: Language; +} +/** + * Code revision model + * @export + * @interface CodeRevision + */ +export interface CodeRevision { + /** + * + * @type {string} + * @memberof CodeRevision + */ + id: string; + /** + * + * @type {string} + * @memberof CodeRevision + */ + code: string; + /** + * + * @type {string} + * @memberof CodeRevision + */ + message: string; + /** + * + * @type {string} + * @memberof CodeRevision + */ + parentRevision?: string; + /** + * + * @type {Language} + * @memberof CodeRevision + */ + language: Language; + /** + * + * @type {string} + * @memberof CodeRevision + */ + createdAt: string; + /** + * + * @type {CodeType} + * @memberof CodeRevision + */ + codeType: CodeType; +} + +/** + * + * @export + */ +export const CodeType = { + Normal: 'NORMAL', + DailyChallenge: 'DAILY_CHALLENGE', + Pvp: 'PVP', +} as const; +export type CodeType = (typeof CodeType)[keyof typeof CodeType]; + +/** + * Model for complete profile request + * @export + * @interface CompleteProfileRequest + */ +export interface CompleteProfileRequest { + /** + * + * @type {string} + * @memberof CompleteProfileRequest + */ + username: string; + /** + * + * @type {string} + * @memberof CompleteProfileRequest + */ + name: string; + /** + * + * @type {string} + * @memberof CompleteProfileRequest + */ + country: string; + /** + * + * @type {string} + * @memberof CompleteProfileRequest + */ + college: string; + /** + * + * @type {number} + * @memberof CompleteProfileRequest + */ + avatarId: number; +} +/** + * Create code revision request + * @export + * @interface CreateCodeRevisionRequest + */ +export interface CreateCodeRevisionRequest { + /** + * + * @type {string} + * @memberof CreateCodeRevisionRequest + */ + code: string; + /** + * + * @type {CodeType} + * @memberof CreateCodeRevisionRequest + */ + codeType?: CodeType; + /** + * + * @type {string} + * @memberof CreateCodeRevisionRequest + */ + message: string; + /** + * + * @type {Language} + * @memberof CreateCodeRevisionRequest + */ + language: Language; +} +/** + * Create map revision request + * @export + * @interface CreateMapRevisionRequest + */ +export interface CreateMapRevisionRequest { + /** + * + * @type {string} + * @memberof CreateMapRevisionRequest + */ + map: string; + /** + * + * @type {GameMapType} + * @memberof CreateMapRevisionRequest + */ + mapType?: GameMapType; + /** + * + * @type {string} + * @memberof CreateMapRevisionRequest + */ + mapImage: string; + /** + * + * @type {string} + * @memberof CreateMapRevisionRequest + */ + message: string; +} +/** + * Create match request + * + * If mode is SELF: either/both of mapRevisionId and codeRevisionId have to be provided, or else latest code will be used to initiate the match + * If mode is MANUAL: only opponentUsername should be provided + * @export + * @interface CreateMatchRequest + */ +export interface CreateMatchRequest { + /** + * + * @type {MatchMode} + * @memberof CreateMatchRequest + */ + mode: MatchMode; + /** + * Username of the opponent + * @type {string} + * @memberof CreateMatchRequest + */ + opponentUsername?: string | null; + /** + * Revision ID of the map + * @type {string} + * @memberof CreateMatchRequest + */ + mapRevisionId?: string | null; + /** + * Revision of the code + * @type {string} + * @memberof CreateMatchRequest + */ + codeRevisionId?: string | null; + /** + * Revision of the code (for SELF-PVP mode) + * @type {string} + * @memberof CreateMatchRequest + */ + codeRevisionId2?: string | null; +} +/** + * Current user profile model + * @export + * @interface CurrentUserProfile + */ +export interface CurrentUserProfile { + /** + * + * @type {string} + * @memberof CurrentUserProfile + */ + id: string; + /** + * + * @type {string} + * @memberof CurrentUserProfile + */ + username: string; + /** + * + * @type {string} + * @memberof CurrentUserProfile + */ + name: string; + /** + * + * @type {string} + * @memberof CurrentUserProfile + */ + email: string; + /** + * + * @type {string} + * @memberof CurrentUserProfile + */ + country: string; + /** + * + * @type {string} + * @memberof CurrentUserProfile + */ + college: string; + /** + * + * @type {number} + * @memberof CurrentUserProfile + */ + avatarId: number; + /** + * + * @type {number} + * @memberof CurrentUserProfile + */ + tutorialLevel: number; + /** + * + * @type {TierType} + * @memberof CurrentUserProfile + */ + tier?: TierType; + /** + * + * @type {boolean} + * @memberof CurrentUserProfile + */ + isProfileComplete: boolean; + /** + * + * @type {boolean} + * @memberof CurrentUserProfile + */ + isTutorialComplete: boolean; +} +/** + * Get current-user daily challenge + * @export + * @interface DailyChallengeGetRequest + */ +export interface DailyChallengeGetRequest { + /** + * + * @type {string} + * @memberof DailyChallengeGetRequest + */ + challName: string; + /** + * + * @type {string} + * @memberof DailyChallengeGetRequest + */ + description?: string; + /** + * + * @type {DailyChallengeObject} + * @memberof DailyChallengeGetRequest + */ + chall: DailyChallengeObject; + /** + * + * @type {ChallengeType} + * @memberof DailyChallengeGetRequest + */ + challType: ChallengeType; + /** + * + * @type {boolean} + * @memberof DailyChallengeGetRequest + */ + completionStatus?: boolean; +} +/** + * Response model for daily challenge leaderboard + * @export + * @interface DailyChallengeLeaderBoardResponse + */ +export interface DailyChallengeLeaderBoardResponse { + /** + * + * @type {string} + * @memberof DailyChallengeLeaderBoardResponse + */ + userName: string; + /** + * + * @type {number} + * @memberof DailyChallengeLeaderBoardResponse + */ + score: number; + /** + * + * @type {number} + * @memberof DailyChallengeLeaderBoardResponse + */ + avatarId: number; +} +/** + * Request Model for the daily challenge + * @export + * @interface DailyChallengeMatchRequest + */ +export interface DailyChallengeMatchRequest { + /** + * + * @type {string} + * @memberof DailyChallengeMatchRequest + */ + value: string; + /** + * + * @type {Language} + * @memberof DailyChallengeMatchRequest + */ + language?: Language; +} +/** + * The object describing the challenge for the day + * @export + * @interface DailyChallengeObject + */ +export interface DailyChallengeObject { + /** + * + * @type {string} + * @memberof DailyChallengeObject + */ + cpp?: string; + /** + * + * @type {string} + * @memberof DailyChallengeObject + */ + java?: string; + /** + * + * @type {string} + * @memberof DailyChallengeObject + */ + python?: string; + /** + * + * @type {string} + * @memberof DailyChallengeObject + */ + image?: string; +} +/** + * Forgot password request + * @export + * @interface ForgotPasswordRequest + */ +export interface ForgotPasswordRequest { + /** + * + * @type {string} + * @memberof ForgotPasswordRequest + */ + email: string; + /** + * + * @type {string} + * @memberof ForgotPasswordRequest + */ + recaptchaCode?: string; +} +/** + * Game model + * @export + * @interface Game + */ +export interface Game { + /** + * + * @type {string} + * @memberof Game + */ + id: string; + /** + * + * @type {number} + * @memberof Game + */ + destruction: number; + /** + * + * @type {number} + * @memberof Game + */ + coinsUsed: number; + /** + * + * @type {GameStatus} + * @memberof Game + */ + status: GameStatus; +} +/** + * GameMap model + * @export + * @interface GameMap + */ +export interface GameMap { + /** + * + * @type {string} + * @memberof GameMap + */ + map: string; + /** + * + * @type {string} + * @memberof GameMap + */ + mapImage: string; + /** + * + * @type {string} + * @memberof GameMap + */ + lastSavedAt: string; +} +/** + * GameMap revision model + * @export + * @interface GameMapRevision + */ +export interface GameMapRevision { + /** + * + * @type {string} + * @memberof GameMapRevision + */ + id: string; + /** + * + * @type {string} + * @memberof GameMapRevision + */ + map: string; + /** + * + * @type {string} + * @memberof GameMapRevision + */ + parentRevision?: string; + /** + * + * @type {string} + * @memberof GameMapRevision + */ + createdAt: string; + /** + * + * @type {string} + * @memberof GameMapRevision + */ + message: string; +} + +/** + * + * @export + */ +export const GameMapType = { + Normal: 'NORMAL', + DailyChallenge: 'DAILY_CHALLENGE', +} as const; +export type GameMapType = (typeof GameMapType)[keyof typeof GameMapType]; + +/** + * + * @export + */ +export const GameStatus = { + Idle: 'IDLE', + Executing: 'EXECUTING', + Executed: 'EXECUTED', + ExecuteError: 'EXECUTE_ERROR', +} as const; +export type GameStatus = (typeof GameStatus)[keyof typeof GameStatus]; + +/** + * Model for Generic Error + * @export + * @interface GenericError + */ +export interface GenericError { + /** + * + * @type {string} + * @memberof GenericError + */ + message?: string; +} + +/** + * Language of source files + * @export + */ +export const Language = { + C: 'C', + Cpp: 'CPP', + Java: 'JAVA', + Python: 'PYTHON', +} as const; +export type Language = (typeof Language)[keyof typeof Language]; + +/** + * Leaderboard entry model + * @export + * @interface LeaderboardEntry + */ +export interface LeaderboardEntry { + /** + * + * @type {PublicUser} + * @memberof LeaderboardEntry + */ + user: PublicUser; + /** + * + * @type {UserStats} + * @memberof LeaderboardEntry + */ + stats: UserStats; +} +/** + * Get map image and map by commitId + * @export + * @interface MapCommitByCommitIdResponse + */ +export interface MapCommitByCommitIdResponse { + /** + * + * @type {string} + * @memberof MapCommitByCommitIdResponse + */ + mapImage: string; + /** + * + * @type {string} + * @memberof MapCommitByCommitIdResponse + */ + map: string; +} +/** + * Match model + * @export + * @interface Match + */ +export interface Match { + /** + * + * @type {string} + * @memberof Match + */ + id: string; + /** + * + * @type {Set} + * @memberof Match + */ + games: Set; + /** + * + * @type {MatchMode} + * @memberof Match + */ + matchMode: MatchMode; + /** + * + * @type {Verdict} + * @memberof Match + */ + matchVerdict: Verdict; + /** + * + * @type {string} + * @memberof Match + */ + createdAt: string; + /** + * + * @type {PublicUser} + * @memberof Match + */ + user1: PublicUser; + /** + * + * @type {PublicUser} + * @memberof Match + */ + user2?: PublicUser; +} + +/** + * Match Mode + * @export + */ +export const MatchMode = { + Self: 'SELF', + Manual: 'MANUAL', + Auto: 'AUTO', + Dailychallenge: 'DAILYCHALLENGE', + Pvp: 'PVP', + Selfpvp: 'SELFPVP', +} as const; +export type MatchMode = (typeof MatchMode)[keyof typeof MatchMode]; + +/** + * Notification model + * @export + * @interface Notification + */ +export interface Notification { + /** + * + * @type {string} + * @memberof Notification + */ + id: string; + /** + * + * @type {string} + * @memberof Notification + */ + title: string; + /** + * + * @type {string} + * @memberof Notification + */ + content: string; + /** + * + * @type {string} + * @memberof Notification + */ + createdAt: string; + /** + * + * @type {boolean} + * @memberof Notification + */ + read: boolean; +} +/** + * Password Login request + * @export + * @interface PasswordLoginRequest + */ +export interface PasswordLoginRequest { + /** + * + * @type {string} + * @memberof PasswordLoginRequest + */ + email: string; + /** + * + * @type {string} + * @memberof PasswordLoginRequest + */ + password: string; +} +/** + * Login response with user token + * @export + * @interface PasswordLoginResponse + */ +export interface PasswordLoginResponse { + /** + * Bearer token + * @type {string} + * @memberof PasswordLoginResponse + */ + token: string; +} +/** + * Public user model + * @export + * @interface PublicUser + */ +export interface PublicUser { + /** + * + * @type {string} + * @memberof PublicUser + */ + username: string; + /** + * + * @type {string} + * @memberof PublicUser + */ + name: string; + /** + * + * @type {string} + * @memberof PublicUser + */ + country: string; + /** + * + * @type {TierType} + * @memberof PublicUser + */ + tier: TierType; + /** + * + * @type {string} + * @memberof PublicUser + */ + college: string; + /** + * + * @type {number} + * @memberof PublicUser + */ + avatarId: number; +} +/** + * PvP Game model + * @export + * @interface PvPGame + */ +export interface PvPGame { + /** + * + * @type {string} + * @memberof PvPGame + */ + id: string; + /** + * + * @type {number} + * @memberof PvPGame + */ + scorePlayer1: number; + /** + * + * @type {number} + * @memberof PvPGame + */ + scorePlayer2: number; + /** + * + * @type {PvPGameStatus} + * @memberof PvPGame + */ + status: PvPGameStatus; +} + +/** + * + * @export + */ +export const PvPGameStatus = { + Idle: 'IDLE', + Executing: 'EXECUTING', + Executed: 'EXECUTED', + ExecuteError: 'EXECUTE_ERROR', +} as const; +export type PvPGameStatus = (typeof PvPGameStatus)[keyof typeof PvPGameStatus]; + +/** + * Response model for PvP leaderboard + * @export + * @interface PvPLeaderBoardResponse + */ +export interface PvPLeaderBoardResponse { + /** + * + * @type {PublicUser} + * @memberof PvPLeaderBoardResponse + */ + user: PublicUser; + /** + * + * @type {PvPUserStats} + * @memberof PvPLeaderBoardResponse + */ + stats: PvPUserStats; +} +/** + * PvP Match model + * @export + * @interface PvPMatch + */ +export interface PvPMatch { + /** + * + * @type {string} + * @memberof PvPMatch + */ + id: string; + /** + * + * @type {PvPGame} + * @memberof PvPMatch + */ + game: PvPGame; + /** + * + * @type {MatchMode} + * @memberof PvPMatch + */ + matchMode: MatchMode; + /** + * + * @type {Verdict} + * @memberof PvPMatch + */ + matchVerdict: Verdict; + /** + * + * @type {string} + * @memberof PvPMatch + */ + createdAt: string; + /** + * + * @type {PublicUser} + * @memberof PvPMatch + */ + user1: PublicUser; + /** + * + * @type {PublicUser} + * @memberof PvPMatch + */ + user2: PublicUser; +} +/** + * PvP User stats model + * @export + * @interface PvPUserStats + */ +export interface PvPUserStats { + /** + * + * @type {number} + * @memberof PvPUserStats + */ + rating: number; + /** + * + * @type {number} + * @memberof PvPUserStats + */ + wins: number; + /** + * + * @type {number} + * @memberof PvPUserStats + */ + losses: number; + /** + * + * @type {number} + * @memberof PvPUserStats + */ + ties: number; +} +/** + * Rating history model + * @export + * @interface RatingHistory + */ +export interface RatingHistory { + /** + * + * @type {number} + * @memberof RatingHistory + */ + rating: number; + /** + * + * @type {number} + * @memberof RatingHistory + */ + ratingDeviation: number; + /** + * + * @type {string} + * @memberof RatingHistory + */ + validFrom: string; +} +/** + * Register user request + * @export + * @interface RegisterUserRequest + */ +export interface RegisterUserRequest { + /** + * + * @type {string} + * @memberof RegisterUserRequest + */ + username: string; + /** + * + * @type {string} + * @memberof RegisterUserRequest + */ + name: string; + /** + * + * @type {string} + * @memberof RegisterUserRequest + */ + email: string; + /** + * + * @type {string} + * @memberof RegisterUserRequest + */ + password: string; + /** + * + * @type {string} + * @memberof RegisterUserRequest + */ + passwordConfirmation: string; + /** + * + * @type {string} + * @memberof RegisterUserRequest + */ + country: string; + /** + * + * @type {string} + * @memberof RegisterUserRequest + */ + college: string; + /** + * + * @type {number} + * @memberof RegisterUserRequest + */ + avatarId: number; + /** + * + * @type {string} + * @memberof RegisterUserRequest + */ + recaptchaCode: string; +} +/** + * Reset password request + * @export + * @interface ResetPasswordRequest + */ +export interface ResetPasswordRequest { + /** + * + * @type {string} + * @memberof ResetPasswordRequest + */ + token: string; + /** + * + * @type {string} + * @memberof ResetPasswordRequest + */ + password: string; + /** + * + * @type {string} + * @memberof ResetPasswordRequest + */ + passwordConfirmation: string; +} + +/** + * + * @export + */ +export const TierType = { + TierPractice: 'TIER_PRACTICE', + Tier1: 'TIER1', + Tier2: 'TIER2', + Tier3: 'TIER3', + Tier4: 'TIER4', +} as const; +export type TierType = (typeof TierType)[keyof typeof TierType]; + +/** + * + * @export + */ +export const TutorialUpdateType = { + Next: 'NEXT', + Previous: 'PREVIOUS', + Skip: 'SKIP', + Reset: 'RESET', +} as const; +export type TutorialUpdateType = + (typeof TutorialUpdateType)[keyof typeof TutorialUpdateType]; + +/** + * Update current user profile request + * @export + * @interface UpdateCurrentUserProfile + */ +export interface UpdateCurrentUserProfile { + /** + * + * @type {string} + * @memberof UpdateCurrentUserProfile + */ + name?: string | null; + /** + * + * @type {string} + * @memberof UpdateCurrentUserProfile + */ + country?: string | null; + /** + * + * @type {string} + * @memberof UpdateCurrentUserProfile + */ + college?: string | null; + /** + * + * @type {number} + * @memberof UpdateCurrentUserProfile + */ + avatarId?: number | null; + /** + * + * @type {TutorialUpdateType} + * @memberof UpdateCurrentUserProfile + */ + updateTutorialLevel?: TutorialUpdateType; +} +/** + * Update latest code request + * @export + * @interface UpdateLatestCodeRequest + */ +export interface UpdateLatestCodeRequest { + /** + * + * @type {string} + * @memberof UpdateLatestCodeRequest + */ + code: string; + /** + * + * @type {CodeType} + * @memberof UpdateLatestCodeRequest + */ + codeType?: CodeType; + /** + * + * @type {boolean} + * @memberof UpdateLatestCodeRequest + */ + lock?: boolean; + /** + * + * @type {Language} + * @memberof UpdateLatestCodeRequest + */ + language: Language; +} +/** + * Update latest map request + * @export + * @interface UpdateLatestMapRequest + */ +export interface UpdateLatestMapRequest { + /** + * + * @type {string} + * @memberof UpdateLatestMapRequest + */ + map: string; + /** + * + * @type {GameMapType} + * @memberof UpdateLatestMapRequest + */ + mapType?: GameMapType; + /** + * + * @type {string} + * @memberof UpdateLatestMapRequest + */ + mapImage: string; + /** + * + * @type {boolean} + * @memberof UpdateLatestMapRequest + */ + lock?: boolean; +} +/** + * Update password request + * @export + * @interface UpdatePasswordRequest + */ +export interface UpdatePasswordRequest { + /** + * + * @type {string} + * @memberof UpdatePasswordRequest + */ + oldPassword: string; + /** + * + * @type {string} + * @memberof UpdatePasswordRequest + */ + password: string; + /** + * + * @type {string} + * @memberof UpdatePasswordRequest + */ + passwordConfirmation: string; +} +/** + * User Match Stats model + * @export + * @interface UserMatchStats + */ +export interface UserMatchStats { + /** + * + * @type {number} + * @memberof UserMatchStats + */ + avgAtk: number; + /** + * + * @type {number} + * @memberof UserMatchStats + */ + dcWins: number; + /** + * + * @type {number} + * @memberof UserMatchStats + */ + coins: number; +} +/** + * User stats model + * @export + * @interface UserStats + */ +export interface UserStats { + /** + * + * @type {number} + * @memberof UserStats + */ + rating: number; + /** + * + * @type {number} + * @memberof UserStats + */ + wins: number; + /** + * + * @type {number} + * @memberof UserStats + */ + losses: number; + /** + * + * @type {number} + * @memberof UserStats + */ + ties: number; +} + +/** + * Match/Game verdict + * @export + */ +export const Verdict = { + Player1: 'PLAYER1', + Player2: 'PLAYER2', + Tie: 'TIE', + Success: 'SUCCESS', + Failure: 'FAILURE', +} as const; +export type Verdict = (typeof Verdict)[keyof typeof Verdict]; diff --git a/packages/client/src/runtime.ts b/packages/client/src/runtime.ts new file mode 100644 index 0000000..2fe6a42 --- /dev/null +++ b/packages/client/src/runtime.ts @@ -0,0 +1,507 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * CodeCharacter API + * Specification of the CodeCharacter API + * + * The version of the OpenAPI document: 2024.0.1 + * Contact: delta@nitt.edu + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +export const BASE_PATH = 'http://localhost:8080'.replace(/\/+$/, ''); + +export interface ConfigurationParameters { + basePath?: string; // override base path + fetchApi?: FetchAPI; // override for fetch implementation + middleware?: Middleware[]; // middleware to apply before/after fetch requests + queryParamsStringify?: (params: HTTPQuery) => string; // stringify function for query strings + username?: string; // parameter for basic security + password?: string; // parameter for basic security + apiKey?: string | ((name: string) => string); // parameter for apiKey security + accessToken?: + | string + | Promise + | ((name?: string, scopes?: string[]) => string | Promise); // parameter for oauth2 security + headers?: HTTPHeaders; //header params we want to use on every request + credentials?: RequestCredentials; //value for the credentials param we want to use on each request +} + +export class Configuration { + constructor(private configuration: ConfigurationParameters = {}) {} + + set config(configuration: Configuration) { + this.configuration = configuration; + } + + get basePath(): string { + return this.configuration.basePath != null + ? this.configuration.basePath + : BASE_PATH; + } + + get fetchApi(): FetchAPI | undefined { + return this.configuration.fetchApi; + } + + get middleware(): Middleware[] { + return this.configuration.middleware || []; + } + + get queryParamsStringify(): (params: HTTPQuery) => string { + return this.configuration.queryParamsStringify || querystring; + } + + get username(): string | undefined { + return this.configuration.username; + } + + get password(): string | undefined { + return this.configuration.password; + } + + get apiKey(): ((name: string) => string) | undefined { + const apiKey = this.configuration.apiKey; + if (apiKey) { + return typeof apiKey === 'function' ? apiKey : () => apiKey; + } + return undefined; + } + + get accessToken(): + | ((name?: string, scopes?: string[]) => string | Promise) + | undefined { + const accessToken = this.configuration.accessToken; + if (accessToken) { + return typeof accessToken === 'function' + ? accessToken + : async () => accessToken; + } + return undefined; + } + + get headers(): HTTPHeaders | undefined { + return this.configuration.headers; + } + + get credentials(): RequestCredentials | undefined { + return this.configuration.credentials; + } +} + +export const DefaultConfig = new Configuration(); + +/** + * This is the base class for all generated API classes. + */ +export class BaseAPI { + private static readonly jsonRegex = new RegExp( + '^(:?application/json|[^;/ \t]+/[^;/ \t]+[+]json)[ \t]*(:?;.*)?$', + 'i', + ); + private middleware: Middleware[]; + + constructor(protected configuration = DefaultConfig) { + this.middleware = configuration.middleware; + } + + withMiddleware(this: T, ...middlewares: Middleware[]) { + const next = this.clone(); + next.middleware = next.middleware.concat(...middlewares); + return next; + } + + withPreMiddleware( + this: T, + ...preMiddlewares: Array + ) { + const middlewares = preMiddlewares.map(pre => ({ pre })); + return this.withMiddleware(...middlewares); + } + + withPostMiddleware( + this: T, + ...postMiddlewares: Array + ) { + const middlewares = postMiddlewares.map(post => ({ post })); + return this.withMiddleware(...middlewares); + } + + /** + * Check if the given MIME is a JSON MIME. + * JSON MIME examples: + * application/json + * application/json; charset=UTF8 + * APPLICATION/JSON + * application/vnd.company+json + * @param mime - MIME (Multipurpose Internet Mail Extensions) + * @return True if the given MIME is JSON, false otherwise. + */ + protected isJsonMime(mime: string | null | undefined): boolean { + if (!mime) { + return false; + } + return BaseAPI.jsonRegex.test(mime); + } + + protected async request( + context: RequestOpts, + initOverrides?: RequestInit | InitOverrideFunction, + ): Promise { + const { url, init } = await this.createFetchParams(context, initOverrides); + const response = await this.fetchApi(url, init); + if (response && response.status >= 200 && response.status < 300) { + return response; + } + throw new ResponseError(response, 'Response returned an error code'); + } + + private async createFetchParams( + context: RequestOpts, + initOverrides?: RequestInit | InitOverrideFunction, + ) { + let url = this.configuration.basePath + context.path; + if ( + context.query !== undefined && + Object.keys(context.query).length !== 0 + ) { + // only add the querystring to the URL if there are query parameters. + // this is done to avoid urls ending with a "?" character which buggy webservers + // do not handle correctly sometimes. + url += '?' + this.configuration.queryParamsStringify(context.query); + } + + const headers = Object.assign( + {}, + this.configuration.headers, + context.headers, + ); + Object.keys(headers).forEach(key => + headers[key] === undefined ? delete headers[key] : {}, + ); + + const initOverrideFn = + typeof initOverrides === 'function' + ? initOverrides + : async () => initOverrides; + + const initParams = { + method: context.method, + headers, + body: context.body, + credentials: this.configuration.credentials, + }; + + const overriddenInit: RequestInit = { + ...initParams, + ...(await initOverrideFn({ + init: initParams, + context, + })), + }; + + let body: any; + if ( + isFormData(overriddenInit.body) || + overriddenInit.body instanceof URLSearchParams || + isBlob(overriddenInit.body) + ) { + body = overriddenInit.body; + } else if (this.isJsonMime(headers['Content-Type'])) { + body = JSON.stringify(overriddenInit.body); + } else { + body = overriddenInit.body; + } + + const init: RequestInit = { + ...overriddenInit, + body, + }; + + return { url, init }; + } + + private fetchApi = async (url: string, init: RequestInit) => { + let fetchParams = { url, init }; + for (const middleware of this.middleware) { + if (middleware.pre) { + fetchParams = + (await middleware.pre({ + fetch: this.fetchApi, + ...fetchParams, + })) || fetchParams; + } + } + let response: Response | undefined = undefined; + try { + response = await (this.configuration.fetchApi || fetch)( + fetchParams.url, + fetchParams.init, + ); + } catch (e) { + for (const middleware of this.middleware) { + if (middleware.onError) { + response = + (await middleware.onError({ + fetch: this.fetchApi, + url: fetchParams.url, + init: fetchParams.init, + error: e, + response: response ? response.clone() : undefined, + })) || response; + } + } + if (response === undefined) { + if (e instanceof Error) { + throw new FetchError( + e, + 'The request failed and the interceptors did not return an alternative response', + ); + } else { + throw e; + } + } + } + for (const middleware of this.middleware) { + if (middleware.post) { + response = + (await middleware.post({ + fetch: this.fetchApi, + url: fetchParams.url, + init: fetchParams.init, + response: response.clone(), + })) || response; + } + } + return response; + }; + + /** + * Create a shallow clone of `this` by constructing a new instance + * and then shallow cloning data members. + */ + private clone(this: T): T { + const constructor = this.constructor as any; + const next = new constructor(this.configuration); + next.middleware = this.middleware.slice(); + return next; + } +} + +function isBlob(value: any): value is Blob { + return typeof Blob !== 'undefined' && value instanceof Blob; +} + +function isFormData(value: any): value is FormData { + return typeof FormData !== 'undefined' && value instanceof FormData; +} + +export class ResponseError extends Error { + override name: 'ResponseError' = 'ResponseError'; + constructor(public response: Response, msg?: string) { + super(msg); + } +} + +export class FetchError extends Error { + override name: 'FetchError' = 'FetchError'; + constructor(public cause: Error, msg?: string) { + super(msg); + } +} + +export class RequiredError extends Error { + override name: 'RequiredError' = 'RequiredError'; + constructor(public field: string, msg?: string) { + super(msg); + } +} + +export const COLLECTION_FORMATS = { + csv: ',', + ssv: ' ', + tsv: '\t', + pipes: '|', +}; + +export type FetchAPI = WindowOrWorkerGlobalScope['fetch']; + +export type Json = any; +export type HTTPMethod = + | 'GET' + | 'POST' + | 'PUT' + | 'PATCH' + | 'DELETE' + | 'OPTIONS' + | 'HEAD'; +export type HTTPHeaders = { [key: string]: string }; +export type HTTPQuery = { + [key: string]: + | string + | number + | null + | boolean + | Array + | Set + | HTTPQuery; +}; +export type HTTPBody = Json | FormData | URLSearchParams; +export type HTTPRequestInit = { + headers?: HTTPHeaders; + method: HTTPMethod; + credentials?: RequestCredentials; + body?: HTTPBody; +}; +export type ModelPropertyNaming = + | 'camelCase' + | 'snake_case' + | 'PascalCase' + | 'original'; + +export type InitOverrideFunction = (requestContext: { + init: HTTPRequestInit; + context: RequestOpts; +}) => Promise; + +export interface FetchParams { + url: string; + init: RequestInit; +} + +export interface RequestOpts { + path: string; + method: HTTPMethod; + headers: HTTPHeaders; + query?: HTTPQuery; + body?: HTTPBody; +} + +export function querystring(params: HTTPQuery, prefix: string = ''): string { + return Object.keys(params) + .map(key => querystringSingleKey(key, params[key], prefix)) + .filter(part => part.length > 0) + .join('&'); +} + +function querystringSingleKey( + key: string, + value: + | string + | number + | null + | undefined + | boolean + | Array + | Set + | HTTPQuery, + keyPrefix: string = '', +): string { + const fullKey = keyPrefix + (keyPrefix.length ? `[${key}]` : key); + if (value instanceof Array) { + const multiValue = value + .map(singleValue => encodeURIComponent(String(singleValue))) + .join(`&${encodeURIComponent(fullKey)}=`); + return `${encodeURIComponent(fullKey)}=${multiValue}`; + } + if (value instanceof Set) { + const valueAsArray = Array.from(value); + return querystringSingleKey(key, valueAsArray, keyPrefix); + } + if (value instanceof Date) { + return `${encodeURIComponent(fullKey)}=${encodeURIComponent( + value.toISOString(), + )}`; + } + if (value instanceof Object) { + return querystring(value as HTTPQuery, fullKey); + } + return `${encodeURIComponent(fullKey)}=${encodeURIComponent(String(value))}`; +} + +export function canConsumeForm(consumes: Consume[]): boolean { + for (const consume of consumes) { + if ('multipart/form-data' === consume.contentType) { + return true; + } + } + return false; +} + +export interface Consume { + contentType: string; +} + +export interface RequestContext { + fetch: FetchAPI; + url: string; + init: RequestInit; +} + +export interface ResponseContext { + fetch: FetchAPI; + url: string; + init: RequestInit; + response: Response; +} + +export interface ErrorContext { + fetch: FetchAPI; + url: string; + init: RequestInit; + error: unknown; + response?: Response; +} + +export interface Middleware { + pre?(context: RequestContext): Promise; + post?(context: ResponseContext): Promise; + onError?(context: ErrorContext): Promise; +} + +export interface ApiResponse { + raw: Response; + value(): Promise; +} + +export interface ResponseTransformer { + (json: any): T; +} + +export class JSONApiResponse { + constructor( + public raw: Response, + private transformer: ResponseTransformer = (jsonValue: any) => jsonValue, + ) {} + + async value(): Promise { + return this.transformer(await this.raw.json()); + } +} + +export class VoidApiResponse { + constructor(public raw: Response) {} + + async value(): Promise { + return undefined; + } +} + +export class BlobApiResponse { + constructor(public raw: Response) {} + + async value(): Promise { + return await this.raw.blob(); + } +} + +export class TextApiResponse { + constructor(public raw: Response) {} + + async value(): Promise { + return await this.raw.text(); + } +} diff --git a/packages/client/tsconfig.json b/packages/client/tsconfig.json new file mode 100644 index 0000000..d509c6b --- /dev/null +++ b/packages/client/tsconfig.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "declaration": true, + "target": "es6", + "module": "es6", + "moduleResolution": "node", + "outDir": "dist", + "typeRoots": ["node_modules/@types"] + }, + "exclude": ["dist", "node_modules"] +} diff --git a/src/assets/codes b/src/assets/codes index ce8ccff..445b91f 160000 --- a/src/assets/codes +++ b/src/assets/codes @@ -1 +1 @@ -Subproject commit ce8ccff27639c3276f3ede05246d47a42971c6bf +Subproject commit 445b91f2da0440c050cff5cd06619bc1772577c4 diff --git a/yarn.lock b/yarn.lock index 75c4835..26873c0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1640,7 +1640,7 @@ __metadata: version: 0.0.0-use.local resolution: "@codecharacter-2024/client@workspace:packages/client" dependencies: - typescript: "*" + typescript: ^4.0 languageName: unknown linkType: soft @@ -17867,7 +17867,7 @@ __metadata: languageName: node linkType: hard -"typescript@npm:*, typescript@npm:^4.3.2, typescript@npm:^4.5.2, typescript@npm:^4.9.4": +"typescript@npm:^4.0, typescript@npm:^4.3.2, typescript@npm:^4.5.2, typescript@npm:^4.9.4": version: 4.9.5 resolution: "typescript@npm:4.9.5" bin: @@ -17887,7 +17887,7 @@ __metadata: languageName: node linkType: hard -"typescript@patch:typescript@*#~builtin, typescript@patch:typescript@^4.3.2#~builtin, typescript@patch:typescript@^4.5.2#~builtin, typescript@patch:typescript@^4.9.4#~builtin": +"typescript@patch:typescript@^4.0#~builtin, typescript@patch:typescript@^4.3.2#~builtin, typescript@patch:typescript@^4.5.2#~builtin, typescript@patch:typescript@^4.9.4#~builtin": version: 4.9.5 resolution: "typescript@patch:typescript@npm%3A4.9.5#~builtin::version=4.9.5&hash=493e53" bin: