exaroton 1.11.3 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +40 -2
- package/index.js +20 -10
- package/package.json +19 -15
- package/src/Account/Account.js +2 -4
- package/src/Billing/Pool/Pool.js +4 -6
- package/src/Billing/Pool/PoolMember.js +1 -3
- package/src/Client.js +43 -48
- package/src/Error/RequestBodyError.js +8 -6
- package/src/Error/RequestError.js +21 -13
- package/src/Error/RequestStatusError.js +8 -8
- package/src/Request/Account/GetAccountRequest.js +2 -4
- package/src/Request/Billing/Pool/GetPoolMembersRequest.js +3 -5
- package/src/Request/Billing/Pool/GetPoolRequest.js +2 -4
- package/src/Request/Billing/Pool/GetPoolServersRequest.js +3 -5
- package/src/Request/Billing/Pool/GetPoolsRequest.js +3 -5
- package/src/Request/Billing/Pool/PoolRequest.js +2 -4
- package/src/Request/GetServersRequest.js +3 -5
- package/src/Request/Request.js +11 -12
- package/src/Request/Server/ExecuteServerCommandRequest.js +2 -4
- package/src/Request/Server/ExtendServerStopTimeRequest.js +18 -0
- package/src/Request/Server/Files/Config/GetConfigFileOptionsRequest.js +2 -4
- package/src/Request/Server/Files/Config/UpdateConfigFileOptionsRequest.js +2 -4
- package/src/Request/Server/Files/CreateDirectoryRequest.js +2 -4
- package/src/Request/Server/Files/DeleteFileDataRequest.js +2 -4
- package/src/Request/Server/Files/FileDataRequest.js +2 -4
- package/src/Request/Server/Files/FileRequest.js +2 -4
- package/src/Request/Server/Files/GetFileDataRequest.js +2 -4
- package/src/Request/Server/Files/GetFileInformationRequest.js +2 -4
- package/src/Request/Server/Files/PutFileDataRequest.js +2 -4
- package/src/Request/Server/GetServerLogsRequest.js +2 -4
- package/src/Request/Server/GetServerOptionRequest.js +2 -4
- package/src/Request/Server/GetServerRequest.js +2 -4
- package/src/Request/Server/PlayerLists/DeletePlayerListEntriesRequest.js +2 -4
- package/src/Request/Server/PlayerLists/GetPlayerListEntriesRequest.js +2 -4
- package/src/Request/Server/PlayerLists/GetPlayerListsRequest.js +3 -5
- package/src/Request/Server/PlayerLists/PlayerListRequest.js +2 -4
- package/src/Request/Server/PlayerLists/PutPlayerListEntriesRequest.js +2 -4
- package/src/Request/Server/RestartServerRequest.js +2 -4
- package/src/Request/Server/ServerRequest.js +2 -4
- package/src/Request/Server/SetServerOptionRequest.js +2 -4
- package/src/Request/Server/ShareServerLogsRequest.js +2 -4
- package/src/Request/Server/StartServerRequest.js +2 -4
- package/src/Request/Server/StopServerRequest.js +2 -4
- package/src/Response/ArrayResponse.js +2 -4
- package/src/Response/PlayerListsResponse.js +3 -4
- package/src/Response/PoolMembersResponse.js +3 -5
- package/src/Response/PoolsResponse.js +3 -5
- package/src/Response/Response.js +1 -3
- package/src/Response/ServersResponse.js +3 -5
- package/src/Server/Config/Config.js +4 -6
- package/src/Server/Config/ConfigOption.js +1 -3
- package/src/Server/Config/ConfigOptionType.js +1 -3
- package/src/Server/File.js +8 -10
- package/src/Server/PlayerList.js +4 -6
- package/src/Server/Players.js +1 -4
- package/src/Server/Server.js +33 -23
- package/src/Server/ServerStatus.js +1 -2
- package/src/Server/Software.js +1 -3
- package/src/Websocket/ConsoleStream.js +2 -4
- package/src/Websocket/HeapStream.js +2 -4
- package/src/Websocket/ManagementProxyConnection.js +24 -0
- package/src/Websocket/ServerManagementStream.js +78 -0
- package/src/Websocket/StatsStream.js +2 -4
- package/src/Websocket/Stream.js +3 -5
- package/src/Websocket/TickStream.js +2 -4
- package/src/Websocket/WebsocketClient.js +12 -12
package/README.md
CHANGED
|
@@ -6,6 +6,9 @@ the server. You can read the API documentation here: https://developers.exaroton
|
|
|
6
6
|
|
|
7
7
|
This is the official Node.js implementation of this API.
|
|
8
8
|
|
|
9
|
+
### Requirements
|
|
10
|
+
- Node 22 or later
|
|
11
|
+
|
|
9
12
|
### Installation
|
|
10
13
|
|
|
11
14
|
```
|
|
@@ -18,7 +21,7 @@ To use the API and this client you have to get your API key, which you can gener
|
|
|
18
21
|
|
|
19
22
|
### Create a client object
|
|
20
23
|
```js
|
|
21
|
-
|
|
24
|
+
import {Client} from 'exaroton'
|
|
22
25
|
|
|
23
26
|
const client = new Client(token);
|
|
24
27
|
```
|
|
@@ -69,7 +72,7 @@ if (server.hasStatus(server.STATUS.ONLINE)) {
|
|
|
69
72
|
}
|
|
70
73
|
```
|
|
71
74
|
The server status is an `integer` as described in the [documentation](https://developers.exaroton.com/#header-server-status). You can use
|
|
72
|
-
the [ServerStatus](./src/Server/ServerStatus.js) object, which you can require on its own `
|
|
75
|
+
the [ServerStatus](./src/Server/ServerStatus.js) object, which you can require on its own `import {ServerStatus} from 'exaroton'` or via the
|
|
73
76
|
shorthand `server.STATUS` property.
|
|
74
77
|
|
|
75
78
|
#### Start/stop/restart the server
|
|
@@ -93,6 +96,15 @@ try {
|
|
|
93
96
|
}
|
|
94
97
|
```
|
|
95
98
|
|
|
99
|
+
#### Extend the server stop timer
|
|
100
|
+
```js
|
|
101
|
+
try {
|
|
102
|
+
await server.extendStopTime(60);
|
|
103
|
+
} catch (e) {
|
|
104
|
+
console.error(e.message);
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
|
|
96
108
|
#### Get the server logs
|
|
97
109
|
```js
|
|
98
110
|
try {
|
|
@@ -448,6 +460,32 @@ server.on("heap:heap", function(data) {
|
|
|
448
460
|
});
|
|
449
461
|
```
|
|
450
462
|
|
|
463
|
+
### Management Protocol
|
|
464
|
+
The Minecraft server management protocol introduced in 1.21.9 allows controlling various server settings without
|
|
465
|
+
restarting the server and receiving events from the server. This API client supports proxying this protocol through the
|
|
466
|
+
exaroton websocket connection and using it with the [`mc-server-management`](https://github.com/aternosorg/mc-server-management)
|
|
467
|
+
library.
|
|
468
|
+
|
|
469
|
+
```js
|
|
470
|
+
// To use it, first subscribe to the `management` stream:
|
|
471
|
+
server.subscribe("management");
|
|
472
|
+
// Then get a connection object from the stream:
|
|
473
|
+
const connection = server.getWebsocketClient().getStream("management").getProxyConnection();
|
|
474
|
+
// And create an object from the management library:
|
|
475
|
+
import {MinecraftServer} from "mc-server-management";
|
|
476
|
+
const mcServer = new MinecraftServer(stream.getProxyConnection());
|
|
477
|
+
|
|
478
|
+
// Now you can perform requests such as getting the server status:
|
|
479
|
+
let status = await mcServer.getStatus();
|
|
480
|
+
|
|
481
|
+
// And subscribe to notifications:
|
|
482
|
+
import {Notifications} from "mc-server-management";
|
|
483
|
+
mcServer.on(Notifications.ALLOWLIST_ADDED, data => {
|
|
484
|
+
console.log("Allowlist added", data);
|
|
485
|
+
});
|
|
486
|
+
```
|
|
487
|
+
|
|
488
|
+
|
|
451
489
|
#### Unsubscribe
|
|
452
490
|
You can unsubscribe from one, multiple or all streams using the `server.unsubscribe()` function.
|
|
453
491
|
|
package/index.js
CHANGED
|
@@ -1,11 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
import Client from "./src/Client.js";
|
|
2
|
+
import Server from "./src/Server/Server.js";
|
|
3
|
+
import Software from "./src/Server/Software.js";
|
|
4
|
+
import ServerStatus from "./src/Server/ServerStatus.js";
|
|
5
|
+
import Request from "./src/Request/Request.js";
|
|
6
|
+
import Response from "./src/Response/Response.js";
|
|
7
|
+
import ConfigOptionType from "./src/Server/Config/ConfigOptionType.js";
|
|
8
|
+
import Pool from "./src/Billing/Pool/Pool.js";
|
|
9
|
+
import PoolMember from "./src/Billing/Pool/PoolMember.js";
|
|
10
|
+
|
|
11
|
+
export {
|
|
12
|
+
Client,
|
|
13
|
+
Server,
|
|
14
|
+
Software,
|
|
15
|
+
ServerStatus,
|
|
16
|
+
Request,
|
|
17
|
+
Response,
|
|
18
|
+
ConfigOptionType,
|
|
19
|
+
Pool,
|
|
20
|
+
PoolMember,
|
|
11
21
|
}
|
package/package.json
CHANGED
|
@@ -1,17 +1,21 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
"
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
"
|
|
15
|
-
|
|
16
|
-
|
|
2
|
+
"name": "exaroton",
|
|
3
|
+
"version": "2.0.0",
|
|
4
|
+
"description": "exaroton API client",
|
|
5
|
+
"homepage": "https://exaroton.com",
|
|
6
|
+
"main": "index.js",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+https://github.com/exaroton/node-exaroton-api.git"
|
|
10
|
+
},
|
|
11
|
+
"author": "Matthias Neid",
|
|
12
|
+
"license": "MIT",
|
|
13
|
+
"type": "module",
|
|
14
|
+
"engines": {
|
|
15
|
+
"node": ">=22.0.0"
|
|
16
|
+
},
|
|
17
|
+
"dependencies": {
|
|
18
|
+
"mc-server-management": "^3.0.0",
|
|
19
|
+
"ws": "^8.18.3"
|
|
20
|
+
}
|
|
17
21
|
}
|
package/src/Account/Account.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
import GetAccountRequest from '../Request/Account/GetAccountRequest.js'
|
|
2
2
|
|
|
3
|
-
class Account {
|
|
3
|
+
export default class Account {
|
|
4
4
|
/**
|
|
5
5
|
* @type {Client}
|
|
6
6
|
* @private
|
|
@@ -70,5 +70,3 @@ class Account {
|
|
|
70
70
|
return this;
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
|
-
|
|
74
|
-
module.exports = Account;
|
package/src/Billing/Pool/Pool.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import GetPoolRequest from '../../Request/Billing/Pool/GetPoolRequest.js'
|
|
2
|
+
import GetPoolMembersRequest from '../../Request/Billing/Pool/GetPoolMembersRequest.js'
|
|
3
|
+
import GetPoolServersRequest from '../../Request/Billing/Pool/GetPoolServersRequest.js'
|
|
4
4
|
|
|
5
|
-
class Pool {
|
|
5
|
+
export default class Pool {
|
|
6
6
|
/**
|
|
7
7
|
* @type {Client}
|
|
8
8
|
* @private
|
|
@@ -133,5 +133,3 @@ class Pool {
|
|
|
133
133
|
return response.getData();
|
|
134
134
|
}
|
|
135
135
|
}
|
|
136
|
-
|
|
137
|
-
module.exports = Pool;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
class PoolMember {
|
|
2
|
+
export default class PoolMember {
|
|
3
3
|
/**
|
|
4
4
|
* Pool member account ID
|
|
5
5
|
*
|
|
@@ -48,5 +48,3 @@ class PoolMember {
|
|
|
48
48
|
this.isOwner = typeof poolMemberObject.isOwner !== "undefined" ? poolMemberObject.isOwner : null;
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
|
-
|
|
52
|
-
module.exports = PoolMember;
|
package/src/Client.js
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
const fs = require("fs").promises;
|
|
1
|
+
import {unlink} from 'fs/promises'
|
|
3
2
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
3
|
+
import Server from './Server/Server.js'
|
|
4
|
+
import Account from './Account/Account.js'
|
|
5
|
+
import RequestStatusError from './Error/RequestStatusError.js'
|
|
6
|
+
import RequestBodyError from './Error/RequestBodyError.js'
|
|
7
|
+
import GetServersRequest from './Request/GetServersRequest.js'
|
|
8
|
+
import GetPoolsRequest from './Request/Billing/Pool/GetPoolsRequest.js'
|
|
10
9
|
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
import packageConfig from '../package.json' with { type: 'json' }
|
|
11
|
+
import Pool from './Billing/Pool/Pool.js'
|
|
12
|
+
import * as stream from "node:stream";
|
|
13
|
+
import RequestError from "./Error/RequestError.js";
|
|
13
14
|
|
|
14
|
-
class Client {
|
|
15
|
+
export default class Client {
|
|
15
16
|
/**
|
|
16
17
|
* @type {string}
|
|
17
18
|
*/
|
|
@@ -109,62 +110,58 @@ class Client {
|
|
|
109
110
|
request.client = this;
|
|
110
111
|
const url = this.baseURL + request.getEndpoint();
|
|
111
112
|
|
|
112
|
-
|
|
113
|
+
/** @type {RequestInit} */
|
|
114
|
+
const options = {
|
|
113
115
|
method: request.method,
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
116
|
+
headers: Object.assign({
|
|
117
|
+
"authorization": "Bearer " + this.#apiToken,
|
|
118
|
+
"user-agent": this.#userAgent
|
|
119
|
+
}, request.headers)
|
|
120
|
+
}
|
|
117
121
|
|
|
118
122
|
if (request.hasBody()) {
|
|
119
|
-
|
|
123
|
+
options.body = request.getBody();
|
|
120
124
|
}
|
|
121
125
|
|
|
122
|
-
gotOptions.headers = Object.assign({
|
|
123
|
-
"authorization": "Bearer " + this.#apiToken,
|
|
124
|
-
"user-agent": this.#userAgent
|
|
125
|
-
}, request.headers);
|
|
126
|
-
|
|
127
126
|
let response;
|
|
128
127
|
try {
|
|
128
|
+
response = await fetch(url, options);
|
|
129
|
+
if (!response.ok) {
|
|
130
|
+
let data = null;
|
|
131
|
+
try {
|
|
132
|
+
data = await response.json();
|
|
133
|
+
} catch (e) { }
|
|
134
|
+
throw new RequestStatusError(response, data)
|
|
135
|
+
}
|
|
129
136
|
if (request.hasOutputStream()) {
|
|
130
|
-
await
|
|
137
|
+
await response.body.pipeTo(stream.Writable.toWeb(request.getOutputStream()))
|
|
131
138
|
return request.createResponse();
|
|
132
|
-
} else {
|
|
133
|
-
response = await got(url, gotOptions);
|
|
134
139
|
}
|
|
135
140
|
} catch (e) {
|
|
136
141
|
if (request.outputPath !== null) {
|
|
137
142
|
try {
|
|
138
|
-
await
|
|
143
|
+
await unlink(request.outputPath);
|
|
139
144
|
} catch (e) {
|
|
140
145
|
// ignore
|
|
141
146
|
}
|
|
142
147
|
}
|
|
143
|
-
|
|
148
|
+
|
|
149
|
+
if (e instanceof RequestError) {
|
|
150
|
+
throw e;
|
|
151
|
+
}
|
|
152
|
+
throw new RequestError(e);
|
|
144
153
|
}
|
|
145
154
|
|
|
146
|
-
if (
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
155
|
+
if (request.expectsJsonResponse()) {
|
|
156
|
+
const data = await response.json();
|
|
157
|
+
if (data.success) {
|
|
158
|
+
return request.createResponse(data);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
throw new RequestBodyError(response, data);
|
|
150
162
|
}
|
|
151
|
-
}
|
|
152
163
|
|
|
153
|
-
|
|
154
|
-
* @param {string} url
|
|
155
|
-
* @param {{}} gotOptions
|
|
156
|
-
* @param {stream.Writable} outputStream
|
|
157
|
-
* @return {Promise<unknown>}
|
|
158
|
-
*/
|
|
159
|
-
streamResponse(url, gotOptions, outputStream) {
|
|
160
|
-
return new Promise((resolve, reject) => {
|
|
161
|
-
let stream = got.stream(url, gotOptions);
|
|
162
|
-
stream.pipe(outputStream);
|
|
163
|
-
stream.on("error", async (error) => {
|
|
164
|
-
reject(error);
|
|
165
|
-
});
|
|
166
|
-
stream.on("end", resolve);
|
|
167
|
-
});
|
|
164
|
+
return request.createResponse(await response.text());
|
|
168
165
|
}
|
|
169
166
|
|
|
170
167
|
/**
|
|
@@ -217,5 +214,3 @@ class Client {
|
|
|
217
214
|
return new Pool(this, id);
|
|
218
215
|
}
|
|
219
216
|
}
|
|
220
|
-
|
|
221
|
-
module.exports = Client;
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
import RequestError from './RequestError.js'
|
|
2
2
|
|
|
3
|
-
class RequestBodyError extends RequestError {
|
|
4
|
-
|
|
3
|
+
export default class RequestBodyError extends RequestError {
|
|
4
|
+
/**
|
|
5
|
+
* @param {Response} response fetch response object
|
|
6
|
+
* @param {any} data response data
|
|
7
|
+
*/
|
|
8
|
+
constructor(response, data) {
|
|
5
9
|
super();
|
|
6
|
-
this.setErrorFromResponseBody(response);
|
|
10
|
+
this.setErrorFromResponseBody(response, data);
|
|
7
11
|
}
|
|
8
12
|
}
|
|
9
|
-
|
|
10
|
-
module.exports = RequestBodyError;
|
|
@@ -1,25 +1,33 @@
|
|
|
1
|
-
class RequestError extends Error {
|
|
2
|
-
statusCode;
|
|
3
|
-
|
|
1
|
+
export default class RequestError extends Error {
|
|
2
|
+
statusCode = 0;
|
|
3
|
+
/**
|
|
4
|
+
* @type {Response|null} Response object that caused the error (if any)
|
|
5
|
+
*/
|
|
4
6
|
response;
|
|
5
7
|
|
|
8
|
+
/**
|
|
9
|
+
* @param {Error|null} error
|
|
10
|
+
*/
|
|
11
|
+
constructor(error = null) {
|
|
12
|
+
super();
|
|
13
|
+
if (error instanceof Error) {
|
|
14
|
+
this.message = error.toString();
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
6
18
|
/**
|
|
7
19
|
* Set error and status code from response object
|
|
8
20
|
*
|
|
9
21
|
* Returns if an error message was found
|
|
10
22
|
*
|
|
11
|
-
* @param {
|
|
12
|
-
* @
|
|
23
|
+
* @param {Response} response fetch response object
|
|
24
|
+
* @param {any} data response data
|
|
13
25
|
*/
|
|
14
|
-
setErrorFromResponseBody(response) {
|
|
26
|
+
setErrorFromResponseBody(response, data) {
|
|
15
27
|
this.response = response;
|
|
16
|
-
this.statusCode =
|
|
17
|
-
if (typeof
|
|
18
|
-
this.message =
|
|
19
|
-
return true;
|
|
28
|
+
this.statusCode = response.status;
|
|
29
|
+
if (typeof data === "object" && typeof data.success === "boolean" && !data.success && typeof data.error === "string") {
|
|
30
|
+
this.message = data.error;
|
|
20
31
|
}
|
|
21
|
-
return false;
|
|
22
32
|
}
|
|
23
33
|
}
|
|
24
|
-
|
|
25
|
-
module.exports = RequestError;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
import RequestError from './RequestError.js'
|
|
2
2
|
|
|
3
|
-
class RequestStatusError extends RequestError {
|
|
4
|
-
|
|
3
|
+
export default class RequestStatusError extends RequestError {
|
|
4
|
+
/**
|
|
5
|
+
* @param {Response} response fetch response object
|
|
6
|
+
* @param {any} data response data
|
|
7
|
+
*/
|
|
8
|
+
constructor(response, data) {
|
|
5
9
|
super();
|
|
6
|
-
|
|
7
|
-
this.message = error.toString();
|
|
8
|
-
}
|
|
10
|
+
this.setErrorFromResponseBody(response, data);
|
|
9
11
|
}
|
|
10
12
|
}
|
|
11
|
-
|
|
12
|
-
module.exports = RequestStatusError;
|
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import PoolRequest from './PoolRequest.js'
|
|
2
|
+
import PoolMembersResponse from '../../../Response/PoolMembersResponse.js'
|
|
3
3
|
|
|
4
|
-
class GetPoolMembersRequest extends PoolRequest {
|
|
4
|
+
export default class GetPoolMembersRequest extends PoolRequest {
|
|
5
5
|
endpoint = "billing/pools/{id}/members";
|
|
6
6
|
responseClass = PoolMembersResponse;
|
|
7
7
|
}
|
|
8
|
-
|
|
9
|
-
module.exports = GetPoolMembersRequest;
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
import PoolRequest from './PoolRequest.js'
|
|
2
2
|
|
|
3
|
-
class GetPoolRequest extends PoolRequest {
|
|
3
|
+
export default class GetPoolRequest extends PoolRequest {
|
|
4
4
|
endpoint = "billing/pools/{id}";
|
|
5
5
|
}
|
|
6
|
-
|
|
7
|
-
module.exports = GetPoolRequest;
|
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import PoolRequest from './PoolRequest.js'
|
|
2
|
+
import ServersResponse from '../../../Response/ServersResponse.js'
|
|
3
3
|
|
|
4
|
-
class GetPoolServersRequest extends PoolRequest {
|
|
4
|
+
export default class GetPoolServersRequest extends PoolRequest {
|
|
5
5
|
endpoint = "billing/pools/{id}/servers";
|
|
6
6
|
responseClass = ServersResponse;
|
|
7
7
|
}
|
|
8
|
-
|
|
9
|
-
module.exports = GetPoolServersRequest;
|
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import Request from '../../Request.js'
|
|
2
|
+
import PoolsResponse from '../../../Response/PoolsResponse.js'
|
|
3
3
|
|
|
4
|
-
class GetPoolsRequest extends Request {
|
|
4
|
+
export default class GetPoolsRequest extends Request {
|
|
5
5
|
endpoint = "billing/pools";
|
|
6
6
|
responseClass = PoolsResponse;
|
|
7
7
|
}
|
|
8
|
-
|
|
9
|
-
module.exports = GetPoolsRequest;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
import Request from '../../Request.js'
|
|
2
2
|
|
|
3
|
-
class PoolRequest extends Request {
|
|
3
|
+
export default class PoolRequest extends Request {
|
|
4
4
|
/**
|
|
5
5
|
* Pool request constructor
|
|
6
6
|
*
|
|
@@ -11,5 +11,3 @@ class PoolRequest extends Request {
|
|
|
11
11
|
this.setParameter("id", id);
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
|
-
|
|
15
|
-
module.exports = PoolRequest;
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import Request from './Request.js'
|
|
2
|
+
import ServersResponse from '../Response/ServersResponse.js'
|
|
3
3
|
|
|
4
|
-
class GetServersRequest extends Request {
|
|
4
|
+
export default class GetServersRequest extends Request {
|
|
5
5
|
endpoint = "servers";
|
|
6
6
|
responseClass = ServersResponse;
|
|
7
7
|
|
|
8
8
|
}
|
|
9
|
-
|
|
10
|
-
module.exports = GetServersRequest;
|
package/src/Request/Request.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import {createReadStream} from 'fs'
|
|
2
|
+
import {createWriteStream} from 'fs'
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
import Response from '../Response/Response.js'
|
|
5
|
+
import * as stream from "node:stream";
|
|
5
6
|
|
|
6
|
-
class Request {
|
|
7
|
+
export default class Request {
|
|
7
8
|
/**
|
|
8
9
|
* Request method, e.g. "GET" or "POST"
|
|
9
10
|
*
|
|
@@ -63,7 +64,7 @@ class Request {
|
|
|
63
64
|
/**
|
|
64
65
|
* Optional stream to stream the response body to
|
|
65
66
|
*
|
|
66
|
-
* @type {stream.Writable|null}
|
|
67
|
+
* @type {import('stream').Writable|null}
|
|
67
68
|
*/
|
|
68
69
|
outputStream = null;
|
|
69
70
|
|
|
@@ -77,7 +78,7 @@ class Request {
|
|
|
77
78
|
/**
|
|
78
79
|
* Optional stream to read the request body from
|
|
79
80
|
*
|
|
80
|
-
* @type {stream.Readable|null}
|
|
81
|
+
* @type {import('stream').Readable|null}
|
|
81
82
|
*/
|
|
82
83
|
inputStream = null;
|
|
83
84
|
|
|
@@ -137,11 +138,11 @@ class Request {
|
|
|
137
138
|
/**
|
|
138
139
|
* Get body for request
|
|
139
140
|
*
|
|
140
|
-
* @return {
|
|
141
|
+
* @return {BodyInit}
|
|
141
142
|
*/
|
|
142
143
|
getBody() {
|
|
143
144
|
if (this.hasInputStream()) {
|
|
144
|
-
return this.getInputStream();
|
|
145
|
+
return stream.Readable.toWeb(this.getInputStream());
|
|
145
146
|
}
|
|
146
147
|
|
|
147
148
|
if (typeof this.data === "string") {
|
|
@@ -172,7 +173,7 @@ class Request {
|
|
|
172
173
|
}
|
|
173
174
|
|
|
174
175
|
/**
|
|
175
|
-
* @return {null|stream.Writable}
|
|
176
|
+
* @return {null|import('stream').Writable}
|
|
176
177
|
*/
|
|
177
178
|
getOutputStream() {
|
|
178
179
|
if (this.outputStream !== null) {
|
|
@@ -192,7 +193,7 @@ class Request {
|
|
|
192
193
|
}
|
|
193
194
|
|
|
194
195
|
/**
|
|
195
|
-
* @return {null|stream.Readable}
|
|
196
|
+
* @return {null|import('stream').Readable}
|
|
196
197
|
*/
|
|
197
198
|
getInputStream() {
|
|
198
199
|
if (this.inputStream !== null) {
|
|
@@ -266,5 +267,3 @@ class Request {
|
|
|
266
267
|
return this;
|
|
267
268
|
}
|
|
268
269
|
}
|
|
269
|
-
|
|
270
|
-
module.exports = Request;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
import ServerRequest from './ServerRequest.js'
|
|
2
2
|
|
|
3
|
-
class ExecuteServerCommandRequest extends ServerRequest {
|
|
3
|
+
export default class ExecuteServerCommandRequest extends ServerRequest {
|
|
4
4
|
endpoint = "servers/{id}/command";
|
|
5
5
|
method = "POST";
|
|
6
6
|
|
|
@@ -16,5 +16,3 @@ class ExecuteServerCommandRequest extends ServerRequest {
|
|
|
16
16
|
this.data = {command: command};
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
|
-
|
|
20
|
-
module.exports = ExecuteServerCommandRequest;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import ServerRequest from './ServerRequest.js'
|
|
2
|
+
|
|
3
|
+
export default class ExtendServerStopTimeRequest extends ServerRequest {
|
|
4
|
+
endpoint = "servers/{id}/extend-time";
|
|
5
|
+
method = "POST";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* ExecuteServerCommandRequest constructor
|
|
9
|
+
*
|
|
10
|
+
* @param {string} id
|
|
11
|
+
* @param {number} time
|
|
12
|
+
*/
|
|
13
|
+
constructor(id, time) {
|
|
14
|
+
super(id);
|
|
15
|
+
|
|
16
|
+
this.data = {time: time};
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
import FileRequest from '../FileRequest.js'
|
|
2
2
|
|
|
3
|
-
class GetConfigFileOptionsRequest extends FileRequest {
|
|
3
|
+
export default class GetConfigFileOptionsRequest extends FileRequest {
|
|
4
4
|
endpoint = "servers/{id}/files/config/{path}";
|
|
5
5
|
}
|
|
6
|
-
|
|
7
|
-
module.exports = GetConfigFileOptionsRequest;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
import FileRequest from '../FileRequest.js'
|
|
2
2
|
|
|
3
|
-
class UpdateConfigFileOptionsRequest extends FileRequest {
|
|
3
|
+
export default class UpdateConfigFileOptionsRequest extends FileRequest {
|
|
4
4
|
endpoint = "servers/{id}/files/config/{path}";
|
|
5
5
|
method = "POST";
|
|
6
6
|
|
|
@@ -17,5 +17,3 @@ class UpdateConfigFileOptionsRequest extends FileRequest {
|
|
|
17
17
|
this.data = options;
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
|
-
|
|
21
|
-
module.exports = UpdateConfigFileOptionsRequest;
|
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
import PutFileDataRequest from './PutFileDataRequest.js'
|
|
2
2
|
|
|
3
|
-
class CreateDirectoryRequest extends PutFileDataRequest {
|
|
3
|
+
export default class CreateDirectoryRequest extends PutFileDataRequest {
|
|
4
4
|
headers = {
|
|
5
5
|
"Content-Type": "inode/directory"
|
|
6
6
|
}
|
|
7
7
|
}
|
|
8
|
-
|
|
9
|
-
module.exports = CreateDirectoryRequest;
|