Skip to content

Commit 7b926e8

Browse files
committed
feat: add ClaimServer
1 parent 25d27fd commit 7b926e8

File tree

6 files changed

+74
-4
lines changed

6 files changed

+74
-4
lines changed

README.md

+12-1
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,18 @@ client.v1
8282
},
8383
},
8484
})
85+
.then(() => {
86+
// response will be an empty string if valid
87+
});
88+
89+
client.v1
90+
.ClaimServer({
91+
data: {
92+
serverName: "your-server",
93+
adminPassword: "your-password",
94+
},
95+
})
8596
.then((response) => {
86-
console.log("ApplyAdvancedGameSettings Response:", typeof response);
97+
console.log("ClaimServer Response:", response);
8798
});
8899
```

src/index.ts

+3
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ export type {
77
ApplyAdvancedGameSettingsRequest,
88
ApplyAdvancedGameSettingsResponse,
99
BooleanString,
10+
ClaimServerRequest,
11+
ClaimServerResponse,
12+
ClaimServerResponseData,
1013
ErrorResponse,
1114
GetAdvancedGameSettingsRequest,
1215
GetAdvancedGameSettingsResponse,

src/v1/ClaimServer.ts

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import type { ApiRequest, ApiSuccessResponse } from "./common.js";
2+
import { buildApiRequest } from "./common.js";
3+
4+
export type ClaimServerRequest = ApiRequest<
5+
"ClaimServer",
6+
{
7+
/**
8+
* New name of the Dedicated Server.
9+
*/
10+
serverName: string;
11+
/**
12+
* Admin Password to set on the Dedicated Server, in plaintext.
13+
*/
14+
adminPassword: string;
15+
}
16+
>;
17+
18+
export type ClaimServerResponseData = {
19+
/**
20+
* New Authentication Token that the Caller should use to drop Initial Admin privileges.
21+
*/
22+
authenticationToken: string;
23+
};
24+
25+
export type ClaimServerResponse = ApiSuccessResponse<ClaimServerResponseData>;
26+
27+
export const buildClaimServer = buildApiRequest<
28+
ClaimServerRequest,
29+
ClaimServerResponse
30+
>("v1", {
31+
function: "ClaimServer",
32+
});

src/v1/error.ts

+4-3
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,10 @@ export interface ErrorResponse {
1515

1616
export interface InvalidTokenErrorResponse extends ErrorResponse {
1717
errorCode: "invalid_token";
18-
errorMessage: "Token has expired";
1918
}
2019

2120
export interface InsufficientScopeErrorResponse extends ErrorResponse {
2221
errorCode: "insufficient_scope";
23-
errorMessage: "The client is missing required privileges to access the given function";
2422
}
2523

2624
export interface MissingParamsErrorResponse extends ErrorResponse {
@@ -33,5 +31,8 @@ export interface MissingParamsErrorResponse extends ErrorResponse {
3331

3432
export interface WrongPasswordErrorResponse extends ErrorResponse {
3533
errorCode: "wrong_password";
36-
errorMessage: string;
34+
}
35+
36+
export interface ServerClaimedErrorResponse extends ErrorResponse {
37+
errorCode: "server_claimed";
3738
}

src/v1/index.ts

+12
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { buildApplyAdvancedGameSettings } from "./ApplyAdvancedGameSettings.js";
2+
import { buildClaimServer } from "./ClaimServer.js";
23
import type { InternalClientOptions } from "./common.js";
34
import { buildGetAdvancedGameSettings } from "./GetAdvancedGameSettings.js";
45
import { buildGetServerOptions } from "./GetServerOptions.js";
@@ -54,10 +55,21 @@ export function buildV1(options: InternalClientOptions) {
5455
* Will automatically enable Advanced Game Settings for the currently loaded save if they are not enabled already.
5556
*/
5657
ApplyAdvancedGameSettings: buildApplyAdvancedGameSettings(options),
58+
/**
59+
* Claims this Dedicated Server if it is not claimed.
60+
*
61+
* Requires InitialAdmin privilege level, which can only be acquired by attempting passwordless login while the server does not have an Admin Password set, e.g. it is not claimed yet.
62+
*
63+
* Function does not return any data in case of success, and the server is claimed.
64+
*
65+
* The client should drop InitialAdmin privileges after that and use returned AuthenticationToken instead, and update it's cached server game state by calling QueryServerState.
66+
*/
67+
ClaimServer: buildClaimServer(options),
5768
};
5869
}
5970

6071
export type * from "./ApplyAdvancedGameSettings.js";
72+
export type * from "./ClaimServer.js";
6173
export type * from "./common.js";
6274
export type * from "./error.js";
6375
export type * from "./GetAdvancedGameSettings.js";

test.js

+11
Original file line numberDiff line numberDiff line change
@@ -66,3 +66,14 @@ client.v1
6666
.then((response) => {
6767
console.log("ApplyAdvancedGameSettings Response:", typeof response);
6868
});
69+
70+
client.v1
71+
.ClaimServer({
72+
data: {
73+
serverName: "your-server",
74+
adminPassword: "your-password",
75+
},
76+
})
77+
.then((response) => {
78+
console.log("ClaimServer Response:", response);
79+
});

0 commit comments

Comments
 (0)