mirror of
https://github.com/AsgardEternal/SquadJS.git
synced 2024-09-28 16:24:25 -05:00
88 lines
2.6 KiB
JavaScript
88 lines
2.6 KiB
JavaScript
import axios from 'axios';
|
|
import Logger from 'core/logger';
|
|
|
|
export default class AwnAPI {
|
|
constructor(options) {
|
|
this.orgID = options.orgID;
|
|
this.xAuthToken = null;
|
|
}
|
|
|
|
async auth(options) {
|
|
const requestData = {
|
|
username: `${options.creds.username}`,
|
|
password: `${options.creds.password}`
|
|
};
|
|
const res = await this.request('post', '/v5/auth/login', requestData);
|
|
|
|
if (res.status === 200 && res.data.valid) {
|
|
this.xAuthToken = res.data.accessToken;
|
|
Logger.verbose('awnAPI', 1, `Authentication succeeded.`);
|
|
}
|
|
}
|
|
|
|
async request(method, endpoint, data) {
|
|
let ret = null;
|
|
|
|
if (!endpoint.startsWith('/')) endpoint = `/${endpoint}`;
|
|
if (!endpoint.startsWith('/v5/')) endpoint = `/v5/org/${this.orgID}${endpoint}`;
|
|
if (endpoint.includes(':orgId')) endpoint = endpoint.replace(':orgId', `${this.orgID}`);
|
|
|
|
try {
|
|
const axiosRequest = {
|
|
method: method,
|
|
url: `https://api.awn.gg${endpoint}`,
|
|
data: data,
|
|
headers: { 'X-AWN-ACCESS-TOKEN': this.xAuthToken }
|
|
};
|
|
|
|
Logger.verbose('awnAPI', 1, `${axiosRequest.method.toUpperCase()}: ${axiosRequest.url}`);
|
|
Logger.verbose('awnAPI', 3, `Request Data: ${JSON.stringify(data)}`);
|
|
|
|
const res = await axios(axiosRequest);
|
|
|
|
ret = { status: res.status, statusText: res.statusText, data: res.data };
|
|
Logger.verbose('awnAPI', 3, `${JSON.stringify(ret)}`);
|
|
return ret;
|
|
} catch (err) {
|
|
ret = {
|
|
status: err.response.status,
|
|
statusText: err.response.statusText,
|
|
error: err.response.data.error
|
|
};
|
|
Logger.verbose('awnAPI', 1, `ERROR: ${JSON.stringify(err.response.status)}`);
|
|
Logger.verbose('awnAPI', 3, `ERROR: ${JSON.stringify(ret)}`);
|
|
return ret;
|
|
}
|
|
}
|
|
|
|
async addAdmin(listID, steamID) {
|
|
const ret = await this.request('post', `game-servers/admin-lists/${listID}/admins`, {
|
|
type: 'steam64',
|
|
value: `${steamID}`
|
|
});
|
|
ret.success = ret.status === 200;
|
|
return ret;
|
|
}
|
|
|
|
async getAdmin(listID, adminID) {
|
|
const ret = await this.request('get', `game-servers/admin-lists/${listID}/admins/${adminID}`);
|
|
ret.success = ret.status === 200;
|
|
return ret;
|
|
}
|
|
|
|
async removeAdmin(listID, adminID) {
|
|
const ret = await this.request(
|
|
'delete',
|
|
`game-servers/admin-lists/${listID}/admins/${adminID}`
|
|
);
|
|
ret.success = ret.status === 204;
|
|
return ret;
|
|
}
|
|
|
|
async getAdminList(listID) {
|
|
const ret = await this.request('get', `game-servers/admin-lists/${listID}`);
|
|
ret.success = ret.status === 200;
|
|
return ret;
|
|
}
|
|
}
|