F95API/app/scripts/shared.js

155 lines
3.4 KiB
JavaScript

'use strict';
// Core modules
const { join } = require('path');
/**
* Class containing variables shared between modules.
*/
class Shared {
//#region Properties
/**
* Shows log messages and other useful functions for module debugging.
* @type Boolean
*/
static _debug = false;
/**
* Indicates whether a user is logged in to the F95Zone platform or not.
* @type Boolean
*/
static _isLogged = false;
/**
* List of cookies obtained from the F95Zone platform.
* @type Object[]
*/
static _cookies = null;
/**
* List of possible game engines used for development.
* @type String[]
*/
static _engines = null;
/**
* List of possible development statuses that a game can assume.
* @type String[]
*/
static _statuses = null;
/**
* Wait instruction for the browser created by puppeteer.
* @type String
*/
static WAIT_STATEMENT = 'domcontentloaded';
/**
* Path to the directory to save the cache generated by the API.
* @type String
*/
static _cacheDir = './f95cache';
/**
* If true, it opens a new browser for each request to
* the F95Zone platform, otherwise it reuses the same.
* @type Boolean
*/
static _isolation = false;
//#endregion Properties
//#region Getters
/**
* Shows log messages and other useful functions for module debugging.
* @returns {Boolean}
*/
static get debug() {
return this._debug;
}
/**
* @returns {boolean}
*/
static get isLogged() {
return this._isLogged;
}
/**
* @returns {object[]}
*/
static get cookies() {
return this._cookies;
}
/**
* @returns {String[]}
*/
static get engines() {
return this._engines;
}
/**
* @returns {String[]}
*/
static get statuses() {
return this._statuses;
}
/**
* Directory to save the API cache.
* @returns {String}
*/
static get cacheDir() {
return this._cacheDir;
}
/**
* Path to the F95 platform cache.
* @returns {String}
*/
static get cookiesCachePath() {
return join(this._cacheDir, 'cookies.json');
}
/**
* Path to the game engine cache.
* @returns {String}
*/
static get enginesCachePath() {
return join(this._cacheDir, 'engines.json');
}
/**
* Path to the cache of possible game states.
* @returns {String}
*/
static get statusesCachePath() {
return join(this._cacheDir, 'statuses.json');
}
/**
* If true, it opens a new browser for each request
* to the F95Zone platform, otherwise it reuses the same.
* @returns {Boolean}
*/
static get isolation() {
return this._isolation;
}
//#endregion Getters
//#region Setters
static set cookies(val) {
this._cookies = val;
}
static set engines(val) {
this._engines = val;
}
static set statuses(val) {
this._statuses = val;
}
static set cacheDir(val) {
this._cacheDir = val;
}
static set debug(val) {
this._debug = val;
}
static set isLogged(val) {
this._isLogged = val;
}
static set isolation(val) {
this._isolation = val;
}
//#endregion Setters
}
module.exports = Shared;