UNPKG

comic-vine-sdk

Version:

A JS/TS client for the Comic Vine API

71 lines 8.39 kB
"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()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.HttpClient = void 0; const axios_1 = __importDefault(require("axios")); const status_code_js_1 = require("./status-code.js"); const base_error_js_1 = require("../errors/base-error.js"); const index_js_1 = require("../errors/index.js"); const case_converter_js_1 = require("../utils/case-converter.js"); class HttpClient { constructor() { this._http = axios_1.default.create({ transformResponse: (data) => { return data ? (0, case_converter_js_1.convertSnakeCaseToCamelCase)(JSON.parse(data)) : undefined; }, }); } handleResponse(response) { switch (response.data.statusCode) { case status_code_js_1.StatusCode.FilterError: throw new index_js_1.ComicVineFilterError(); case status_code_js_1.StatusCode.JsonpCallbackMissing: throw new index_js_1.ComicJsonpCallbackMissingError(); case status_code_js_1.StatusCode.ObjectNotFound: throw new index_js_1.ComicVineObjectNotFoundError(); case status_code_js_1.StatusCode.SubscriberOnlyVideo: throw new index_js_1.ComicVineSubscriberOnlyError(); case status_code_js_1.StatusCode.UrlFormatError: throw new index_js_1.ComicVineUrlFormatError(); default: return response.data; } } generateClientError(err) { var _a, _b, _c; if (err instanceof base_error_js_1.BaseError) { return err; } const error = err; if (((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) === 401) { return new index_js_1.ComicVineUnauthorizedError(); } const errorMessage = (_c = (_b = error.response) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.message; return new index_js_1.ComicVineGenericRequestError(`${error.message}${errorMessage ? `, ${errorMessage}` : ''}`); } get(url) { return __awaiter(this, void 0, void 0, function* () { try { return this.handleResponse(yield this._http.get(url)); } catch (error) { throw this.generateClientError(error); } }); } } exports.HttpClient = HttpClient; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaHR0cC1jbGllbnQvaHR0cC1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsa0RBQXlEO0FBQ3pELHFEQUE4QztBQUM5QywyREFBb0Q7QUFDcEQsaURBUTRCO0FBRTVCLGtFQUF5RTtBQUV6RSxNQUFhLFVBQVU7SUFHckI7UUFDRSxJQUFJLENBQUMsS0FBSyxHQUFHLGVBQUssQ0FBQyxNQUFNLENBQUM7WUFDeEIsaUJBQWlCLEVBQUUsQ0FBQyxJQUFhLEVBQUUsRUFBRTtnQkFDbkMsT0FBTyxJQUFJO29CQUNULENBQUMsQ0FBQyxJQUFBLCtDQUEyQixFQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBYyxDQUFDLENBQUM7b0JBQ3pELENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDaEIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxjQUFjLENBQVMsUUFBeUM7UUFDdEUsUUFBUSxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2pDLEtBQUssMkJBQVUsQ0FBQyxXQUFXO2dCQUN6QixNQUFNLElBQUksK0JBQW9CLEVBQUUsQ0FBQztZQUNuQyxLQUFLLDJCQUFVLENBQUMsb0JBQW9CO2dCQUNsQyxNQUFNLElBQUkseUNBQThCLEVBQUUsQ0FBQztZQUM3QyxLQUFLLDJCQUFVLENBQUMsY0FBYztnQkFDNUIsTUFBTSxJQUFJLHVDQUE0QixFQUFFLENBQUM7WUFDM0MsS0FBSywyQkFBVSxDQUFDLG1CQUFtQjtnQkFDakMsTUFBTSxJQUFJLHVDQUE0QixFQUFFLENBQUM7WUFDM0MsS0FBSywyQkFBVSxDQUFDLGNBQWM7Z0JBQzVCLE1BQU0sSUFBSSxrQ0FBdUIsRUFBRSxDQUFDO1lBQ3RDO2dCQUNFLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQztRQUN6QixDQUFDO0lBQ0gsQ0FBQztJQUVPLG1CQUFtQixDQUFDLEdBQVk7O1FBQ3RDLElBQUksR0FBRyxZQUFZLHlCQUFTLEVBQUUsQ0FBQztZQUM3QixPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxHQUF1QyxDQUFDO1FBQ3RELElBQUksQ0FBQSxNQUFBLEtBQUssQ0FBQyxRQUFRLDBDQUFFLE1BQU0sTUFBSyxHQUFHLEVBQUUsQ0FBQztZQUNuQyxPQUFPLElBQUkscUNBQTBCLEVBQUUsQ0FBQztRQUMxQyxDQUFDO1FBRUQsTUFBTSxZQUFZLEdBQUcsTUFBQSxNQUFBLEtBQUssQ0FBQyxRQUFRLDBDQUFFLElBQUksMENBQUUsT0FBTyxDQUFDO1FBQ25ELE9BQU8sSUFBSSx1Q0FBNEIsQ0FDckMsR0FBRyxLQUFLLENBQUMsT0FBTyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQzdELENBQUM7SUFDSixDQUFDO0lBRUssR0FBRyxDQUFTLEdBQVc7O1lBQzNCLElBQUksQ0FBQztnQkFDSCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBbUIsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUMxRSxDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZixNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QyxDQUFDO1FBQ0gsQ0FBQztLQUFBO0NBQ0Y7QUFyREQsZ0NBcURDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGF4aW9zLCB7IEF4aW9zRXJyb3IsIEF4aW9zUmVzcG9uc2UgfSBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBTdGF0dXNDb2RlIH0gZnJvbSAnLi9zdGF0dXMtY29kZS5qcyc7XG5pbXBvcnQgeyBCYXNlRXJyb3IgfSBmcm9tICcuLi9lcnJvcnMvYmFzZS1lcnJvci5qcyc7XG5pbXBvcnQge1xuICBDb21pY1ZpbmVGaWx0ZXJFcnJvcixcbiAgQ29taWNKc29ucENhbGxiYWNrTWlzc2luZ0Vycm9yLFxuICBDb21pY1ZpbmVPYmplY3ROb3RGb3VuZEVycm9yLFxuICBDb21pY1ZpbmVVbmF1dGhvcml6ZWRFcnJvcixcbiAgQ29taWNWaW5lVXJsRm9ybWF0RXJyb3IsXG4gIENvbWljVmluZVN1YnNjcmliZXJPbmx5RXJyb3IsXG4gIENvbWljVmluZUdlbmVyaWNSZXF1ZXN0RXJyb3IsXG59IGZyb20gJy4uL2Vycm9ycy9pbmRleC5qcyc7XG5pbXBvcnQgeyBSZXNwb25zZSwgSHR0cENsaWVudCBhcyBIdHRwQ2xpZW50Q29udHJhY3QgfSBmcm9tICcuLi90eXBlcy9pbmRleC5qcyc7XG5pbXBvcnQgeyBjb252ZXJ0U25ha2VDYXNlVG9DYW1lbENhc2UgfSBmcm9tICcuLi91dGlscy9jYXNlLWNvbnZlcnRlci5qcyc7XG5cbmV4cG9ydCBjbGFzcyBIdHRwQ2xpZW50IGltcGxlbWVudHMgSHR0cENsaWVudENvbnRyYWN0IHtcbiAgcHJpdmF0ZSBfaHR0cDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9odHRwID0gYXhpb3MuY3JlYXRlKHtcbiAgICAgIHRyYW5zZm9ybVJlc3BvbnNlOiAoZGF0YTogdW5rbm93bikgPT4ge1xuICAgICAgICByZXR1cm4gZGF0YVxuICAgICAgICAgID8gY29udmVydFNuYWtlQ2FzZVRvQ2FtZWxDYXNlKEpTT04ucGFyc2UoZGF0YSBhcyBzdHJpbmcpKVxuICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlUmVzcG9uc2U8UmVzdWx0PihyZXNwb25zZTogQXhpb3NSZXNwb25zZTxSZXNwb25zZTxSZXN1bHQ+Pikge1xuICAgIHN3aXRjaCAocmVzcG9uc2UuZGF0YS5zdGF0dXNDb2RlKSB7XG4gICAgICBjYXNlIFN0YXR1c0NvZGUuRmlsdGVyRXJyb3I6XG4gICAgICAgIHRocm93IG5ldyBDb21pY1ZpbmVGaWx0ZXJFcnJvcigpO1xuICAgICAgY2FzZSBTdGF0dXNDb2RlLkpzb25wQ2FsbGJhY2tNaXNzaW5nOlxuICAgICAgICB0aHJvdyBuZXcgQ29taWNKc29ucENhbGxiYWNrTWlzc2luZ0Vycm9yKCk7XG4gICAgICBjYXNlIFN0YXR1c0NvZGUuT2JqZWN0Tm90Rm91bmQ6XG4gICAgICAgIHRocm93IG5ldyBDb21pY1ZpbmVPYmplY3ROb3RGb3VuZEVycm9yKCk7XG4gICAgICBjYXNlIFN0YXR1c0NvZGUuU3Vic2NyaWJlck9ubHlWaWRlbzpcbiAgICAgICAgdGhyb3cgbmV3IENvbWljVmluZVN1YnNjcmliZXJPbmx5RXJyb3IoKTtcbiAgICAgIGNhc2UgU3RhdHVzQ29kZS5VcmxGb3JtYXRFcnJvcjpcbiAgICAgICAgdGhyb3cgbmV3IENvbWljVmluZVVybEZvcm1hdEVycm9yKCk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlQ2xpZW50RXJyb3IoZXJyOiB1bmtub3duKSB7XG4gICAgaWYgKGVyciBpbnN0YW5jZW9mIEJhc2VFcnJvcikge1xuICAgICAgcmV0dXJuIGVycjtcbiAgICB9XG5cbiAgICBjb25zdCBlcnJvciA9IGVyciBhcyBBeGlvc0Vycm9yPHsgbWVzc2FnZT86IHN0cmluZyB9PjtcbiAgICBpZiAoZXJyb3IucmVzcG9uc2U/LnN0YXR1cyA9PT0gNDAxKSB7XG4gICAgICByZXR1cm4gbmV3IENvbWljVmluZVVuYXV0aG9yaXplZEVycm9yKCk7XG4gICAgfVxuXG4gICAgY29uc3QgZXJyb3JNZXNzYWdlID0gZXJyb3IucmVzcG9uc2U/LmRhdGE/Lm1lc3NhZ2U7XG4gICAgcmV0dXJuIG5ldyBDb21pY1ZpbmVHZW5lcmljUmVxdWVzdEVycm9yKFxuICAgICAgYCR7ZXJyb3IubWVzc2FnZX0ke2Vycm9yTWVzc2FnZSA/IGAsICR7ZXJyb3JNZXNzYWdlfWAgOiAnJ31gLFxuICAgICk7XG4gIH1cblxuICBhc3luYyBnZXQ8UmVzdWx0Pih1cmw6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVSZXNwb25zZShhd2FpdCB0aGlzLl9odHRwLmdldDxSZXNwb25zZTxSZXN1bHQ+Pih1cmwpKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgdGhpcy5nZW5lcmF0ZUNsaWVudEVycm9yKGVycm9yKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==