@xfallseane/intersect.ts
Version:
The Intersect Engine API Client Library based on TS.
86 lines • 3.7 kB
JavaScript
import { Admin } from './endpoints/admin.js';
import { Authentification } from './endpoints/authentification.js';
import { Chat } from './endpoints/chat.js';
import { GameObjects } from './endpoints/gameobjects.js';
import { Logs } from './endpoints/logs.js';
import { Players } from './endpoints/players.js';
import { Server } from './endpoints/server.js';
import { Users } from './endpoints/users.js';
import { Variables } from './endpoints/variables.js';
/**
* @class Client
* @description The main class of the API
* @link API documentation: https://docs.freemmorpgmaker.com/en-US/api/v1/
* @param {string} url - The url of the API server you're trying to connect to.
* @param {number | string} port - The port of the API server.
* @param {string} token The token getted from the API server.
* @param {string} refreshToken The refresh token getted from the API server.
* @return {Client} The Client objets, with all the endpoints.
* @example
*/
export class Client {
_url;
_token;
_refreshToken;
Admin;
Auth;
Chat;
GameObjects;
Logs;
Players;
Server;
Users;
Variables;
constructor(url, port, token, refreshToken, tokenCooldown) {
this._url = `${url}:${port}`;
this._token = token;
this._refreshToken = refreshToken;
this.Admin = new Admin(this._url, this._token);
this.Auth = new Authentification(this._url, this._token, this._refreshToken);
this.Chat = new Chat(this._url, this._token);
this.GameObjects = new GameObjects(this._url, this._token);
this.Logs = new Logs(this._url, this._token);
this.Players = new Players(this._url, this._token);
this.Server = new Server(this._url, this._token);
this.Users = new Users(this._url, this._token);
this.Variables = new Variables(this._url, this._token);
setInterval(async () => {
console.log('Refreshing token...');
const res = await this.Auth.refreshToken();
this._token = res.access_token;
this._refreshToken = res.refresh_token;
this.Admin = new Admin(this._url, this._token);
this.Auth = new Authentification(this._url, this._token, this._refreshToken);
this.Chat = new Chat(this._url, this._token);
this.GameObjects = new GameObjects(this._url, this._token);
this.Logs = new Logs(this._url, this._token);
this.Players = new Players(this._url, this._token);
this.Server = new Server(this._url, this._token);
this.Users = new Users(this._url, this._token);
this.Variables = new Variables(this._url, this._token);
}, tokenCooldown ? tokenCooldown : 840000);
}
}
/**
* It takes in a url, port, username, and password and returns a json object containing the access token.
* @param {string} url - The url of the API server you're trying to connect to.
* @param {number | string} port - The port of the API server.
* @param {string} username - The username of the API user.
* @param {string} password - The password of the API user.
* @returns The JSON token is being returned.
*/
export async function initToken(url, port, username, password) {
const res = await fetch(`${url}:${port}/api/oauth/token`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
grant_type: 'password',
username: username,
password: password,
}),
});
return await res.json();
}
//# sourceMappingURL=client.js.map