UNPKG

open-critic-node

Version:
69 lines 2.46 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.CriticAPIHelper = void 0; const axios_1 = __importDefault(require("axios")); const error_handler_1 = require("./error-handler"); class CriticAPIHelper { static async getAllGamesWithOptions(getOptions) { try { const requestOptions = { fullUrl: CriticAPIHelper.GATEWAY_API_URL + "?skip=" + ((getOptions.page ? getOptions.page : 0) * CriticAPIHelper.CONSTANT_PAGE_SIZE).toString() + CriticAPIHelper._getPlatformsQueryString(getOptions.platforms), }; const response = await CriticAPIHelper._getRequest(requestOptions); if (response && response.data) { return response.data; } else { return []; } } catch (error) { return error_handler_1.ErrorHandler.handle(error); } } static async getGameById(id) { try { const requestOptions = { fullUrl: CriticAPIHelper.GATEWAY_API_URL + "/" + id.toString(), }; const response = await CriticAPIHelper._getRequest(requestOptions); if (response && response.data) { return response.data; } else { throw new Error(`Game with ID [${id}] could not be found!`); } } catch (error) { return error_handler_1.ErrorHandler.handle(error); } } static async _getRequest(options) { return axios_1.default.get(options.fullUrl, { ...(options.headers && { headers: options.headers }), }); } static _getPlatformsQueryString(platforms) { if (platforms && platforms.length > 0) { let queryString = "&platforms="; platforms.forEach((type) => { queryString += type.toString(); }); return queryString; } else { return ""; } } } exports.CriticAPIHelper = CriticAPIHelper; CriticAPIHelper.GATEWAY_API_URL = "https://api.opencritic.com/api/game"; CriticAPIHelper.CONSTANT_PAGE_SIZE = 20; //# sourceMappingURL=critic-api.helper.js.map