"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); require("dotenv").config(); const axios = require('axios').default; const cheerio = require('cheerio'); const semver = require('semver'); const express = require("express"); const bodyParser = require("body-parser"); const status = require("http-status"); const { Catalogue, Character, CharacterGrowthRate, ClassGrowthRate, FE_Class, Gender, House, Stat, RestrictedCharacterClass } = require("./mapping"); const app = express(); const port = process.env.NODE_PORT || 3000; const argImport = "importing"; app.use(bodyParser.urlencoded({ extended: false })); app.use(bodyParser.json()); app.use(function (req, res, next) { // Allow client to receive the data // from : https://enable-cors.org/server_expressjs.html res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); next(); }); class FE_Charts { static logError(err) { // TODO: Log to file and manage the error console.log(err); } static getAllCharacters() { return __awaiter(this, void 0, void 0, function* () { let characters = null; yield Character.findAll().then(results => { characters = results; }).catch(err => FE_Charts.logError(err)); return characters; }); } static getAllCharactersGrowthRates() { return __awaiter(this, void 0, void 0, function* () { let charactersGrowRates = null; yield CharacterGrowthRate.findAll().then(results => { charactersGrowRates = results; }).catch(err => FE_Charts.logError(err)); return charactersGrowRates; }); } static getAllClassesGrowthRates() { return __awaiter(this, void 0, void 0, function* () { let classesGrowRates = null; yield ClassGrowthRate.findAll().then(results => { classesGrowRates = results; }).catch(err => FE_Charts.logError(err)); return classesGrowRates; }); } static getAllClasses() { return __awaiter(this, void 0, void 0, function* () { let classes = null; yield FE_Class.findAll().then(results => { classes = results; }).catch(err => FE_Charts.logError(err)); return classes; }); } static getAllGenders() { return __awaiter(this, void 0, void 0, function* () { let genders = null; yield Gender.findAll().then(results => { genders = results; }).catch(err => FE_Charts.logError(err)); return genders; }); } static getAllHouses() { return __awaiter(this, void 0, void 0, function* () { let houses = null; yield House.findAll().then(results => { houses = results; }).catch(err => FE_Charts.logError(err)); return houses; }); } static getAllRestrictedClasses() { return __awaiter(this, void 0, void 0, function* () { let restrictedClasses = null; yield RestrictedCharacterClass.findAll().then(results => { restrictedClasses = results; }).catch(err => FE_Charts.logError(err)); return restrictedClasses; }); } static getAllStats() { return __awaiter(this, void 0, void 0, function* () { let stats = null; yield Stat.findAll().then(results => { stats = results; }).catch(err => FE_Charts.logError(err)); return stats; }); } static getCatalogueLastVersion() { return __awaiter(this, void 0, void 0, function* () { let version = null; yield Catalogue.findAll({ attributes: ["version", ["Dttm_Last_Update", "lastUpdate"]], limit: 1, order: [["Dttm_Last_Update", "DESC"]], }).then(results => { version = results[0].version; }).catch(err => FE_Charts.logError(err)); return version; }); } static getAllData() { return __awaiter(this, void 0, void 0, function* () { const version = yield this.getCatalogueLastVersion(); const characters = yield FE_Charts.getAllCharacters(); const characterGrowthRates = yield FE_Charts.getAllCharactersGrowthRates(); const classesGrowthRates = yield FE_Charts.getAllClassesGrowthRates(); const classes = yield FE_Charts.getAllClasses(); const genders = yield FE_Charts.getAllGenders(); const houses = yield FE_Charts.getAllHouses(); const restrictedClasses = yield FE_Charts.getAllRestrictedClasses(); const stats = yield FE_Charts.getAllStats(); return { version: version, characters: characters, charGrowthRates: characterGrowthRates, classGrowthRates: classesGrowthRates, classes: classes, genders: genders, houses: houses, restrictedClasses: restrictedClasses, stats: stats, }; }); } } exports.FE_Charts = FE_Charts; app.get('/', (req, res) => { res.send('Hello World!'); }); app.get('/version', (req, res) => { FE_Charts.getCatalogueLastVersion().then(version => { res.status(status.OK).send(version); }); }); app.get('/all', (req, res) => __awaiter(void 0, void 0, void 0, function* () { const data = yield FE_Charts.getAllData(); res.status(status.OK).send(data); })); app.post('/update', (req, res) => __awaiter(void 0, void 0, void 0, function* () { const clientVersion = req.body.version; if (clientVersion) { FE_Charts.getCatalogueLastVersion().then((version) => __awaiter(void 0, void 0, void 0, function* () { try { if (semver.gt(version, clientVersion)) { const data = yield FE_Charts.getAllData(); res.status(status.OK).send(data); } else { res.status(status.OK).send(); // Catalogue up-to-date } } catch (e) { res.status(status.INTERNAL_SERVER_ERROR).send(e.message); } })); } else { res.status(status.BAD_REQUEST).send("'version' parameter undefined"); } })); // Don't start the server if we're importing some data if (process.argv.find(x => x == argImport) == undefined) { app.listen(port, () => { console.log(`Example app listening on port ${port}!`); }); } //# sourceMappingURL=index.js.map