open-critic-node
Version:
A NodeJS Wrapper for the Open Critic API
69 lines • 2.46 kB
JavaScript
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
;