From 12d7737ecfbb149ce3aba80782f056f5d13d9d96 Mon Sep 17 00:00:00 2001 From: Shinigami92 Date: Sat, 14 Sep 2024 21:17:32 +0200 Subject: [PATCH] feat: add SetClientPassword --- src/index.ts | 4 ++++ src/v1/SetClientPassword.ts | 21 +++++++++++++++++++++ src/v1/error.ts | 4 ++++ src/v1/index.ts | 14 ++++++++++++++ 4 files changed, 43 insertions(+) create mode 100644 src/v1/SetClientPassword.ts diff --git a/src/index.ts b/src/index.ts index 3ac6347..b9415c7 100644 --- a/src/index.ts +++ b/src/index.ts @@ -38,4 +38,8 @@ export type { RenameServerRequest, RenameServerResponse, ServerClaimedErrorResponse, + PasswordInUseErrorResponse, + ServerNotClaimedErrorResponse, + SetClientPasswordRequest, + SetClientPasswordResponse, } from "./v1/index.js"; diff --git a/src/v1/SetClientPassword.ts b/src/v1/SetClientPassword.ts new file mode 100644 index 0000000..231b81a --- /dev/null +++ b/src/v1/SetClientPassword.ts @@ -0,0 +1,21 @@ +import type { ApiRequest } from "./common.js"; +import { buildApiRequest } from "./common.js"; + +export type SetClientPasswordRequest = ApiRequest< + "SetClientPassword", + { + /** + * Client Password to set on the Dedicated Server, in plaintext. + */ + password: string; + } +>; + +export type SetClientPasswordResponse = string; + +export const buildSetClientPassword = buildApiRequest< + SetClientPasswordRequest, + SetClientPasswordResponse +>("v1", { + function: "SetClientPassword", +}); diff --git a/src/v1/error.ts b/src/v1/error.ts index 05ae3a5..44fa2dd 100644 --- a/src/v1/error.ts +++ b/src/v1/error.ts @@ -40,3 +40,7 @@ export interface ServerClaimedErrorResponse extends ErrorResponse { export interface ServerNotClaimedErrorResponse extends ErrorResponse { errorCode: "server_not_claimed"; } + +export interface PasswordInUseErrorResponse extends ErrorResponse { + errorCode: "password_in_use"; +} diff --git a/src/v1/index.ts b/src/v1/index.ts index e809c25..9ec699b 100644 --- a/src/v1/index.ts +++ b/src/v1/index.ts @@ -8,6 +8,7 @@ import { buildPasswordlessLogin } from "./PasswordlessLogin.js"; import { buildPasswordLogin } from "./PasswordLogin.js"; import { buildQueryServerState } from "./QueryServerState.js"; import { buildRenameServer } from "./RenameServer.js"; +import { buildSetClientPassword } from "./SetClientPassword.js"; import { buildVerifyAuthenticationToken } from "./VerifyAuthenticationToken.js"; export function buildV1(options: InternalClientOptions) { @@ -74,6 +75,18 @@ export function buildV1(options: InternalClientOptions) { * Function does not return any data on success. */ RenameServer: buildRenameServer(options), + /** + * Updates the currently set Client Protection Password. + * + * This will invalidate all previously issued Client authentication tokens. + * + * Pass empty string to remove the password, and let anyone join the server as Client. + * + * Requires Admin privileges. + * + * Function does not return any data on success. + */ + SetClientPassword: buildSetClientPassword(options), }; } @@ -88,4 +101,5 @@ export type * from "./PasswordlessLogin.js"; export type * from "./PasswordLogin.js"; export type * from "./QueryServerState.js"; export type * from "./RenameServer.js"; +export type * from "./SetClientPassword.js"; export type * from "./VerifyAuthenticationToken.js";