UNPKG

comic-vine-sdk

Version:

A JS/TS client for the Comic Vine API

52 lines 7.34 kB
import axios from 'axios'; import { StatusCode } from './status-code.js'; import { BaseError } from '../errors/base-error.js'; import { ComicVineFilterError, ComicJsonpCallbackMissingError, ComicVineObjectNotFoundError, ComicVineUnauthorizedError, ComicVineUrlFormatError, ComicVineSubscriberOnlyError, ComicVineGenericRequestError, } from '../errors/index.js'; import { convertSnakeCaseToCamelCase } from '../utils/case-converter.js'; export class HttpClient { constructor() { this._http = axios.create({ transformResponse: (data) => { return data ? convertSnakeCaseToCamelCase(JSON.parse(data)) : undefined; }, }); } handleResponse(response) { switch (response.data.statusCode) { case StatusCode.FilterError: throw new ComicVineFilterError(); case StatusCode.JsonpCallbackMissing: throw new ComicJsonpCallbackMissingError(); case StatusCode.ObjectNotFound: throw new ComicVineObjectNotFoundError(); case StatusCode.SubscriberOnlyVideo: throw new ComicVineSubscriberOnlyError(); case StatusCode.UrlFormatError: throw new ComicVineUrlFormatError(); default: return response.data; } } generateClientError(err) { if (err instanceof BaseError) { return err; } const error = err; if (error.response?.status === 401) { return new ComicVineUnauthorizedError(); } const errorMessage = error.response?.data?.message; return new ComicVineGenericRequestError(`${error.message}${errorMessage ? `, ${errorMessage}` : ''}`); } async get(url) { try { return this.handleResponse(await this._http.get(url)); } catch (error) { throw this.generateClientError(error); } } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaHR0cC1jbGllbnQvaHR0cC1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFvQyxNQUFNLE9BQU8sQ0FBQztBQUN6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsOEJBQThCLEVBQzlCLDRCQUE0QixFQUM1QiwwQkFBMEIsRUFDMUIsdUJBQXVCLEVBQ3ZCLDRCQUE0QixFQUM1Qiw0QkFBNEIsR0FDN0IsTUFBTSxvQkFBb0IsQ0FBQztBQUU1QixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV6RSxNQUFNLE9BQU8sVUFBVTtJQUdyQjtRQUNFLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUN4QixpQkFBaUIsRUFBRSxDQUFDLElBQWEsRUFBRSxFQUFFO2dCQUNuQyxPQUFPLElBQUk7b0JBQ1QsQ0FBQyxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBYyxDQUFDLENBQUM7b0JBQ3pELENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDaEIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxjQUFjLENBQVMsUUFBeUM7UUFDdEUsUUFBUSxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2pDLEtBQUssVUFBVSxDQUFDLFdBQVc7Z0JBQ3pCLE1BQU0sSUFBSSxvQkFBb0IsRUFBRSxDQUFDO1lBQ25DLEtBQUssVUFBVSxDQUFDLG9CQUFvQjtnQkFDbEMsTUFBTSxJQUFJLDhCQUE4QixFQUFFLENBQUM7WUFDN0MsS0FBSyxVQUFVLENBQUMsY0FBYztnQkFDNUIsTUFBTSxJQUFJLDRCQUE0QixFQUFFLENBQUM7WUFDM0MsS0FBSyxVQUFVLENBQUMsbUJBQW1CO2dCQUNqQyxNQUFNLElBQUksNEJBQTRCLEVBQUUsQ0FBQztZQUMzQyxLQUFLLFVBQVUsQ0FBQyxjQUFjO2dCQUM1QixNQUFNLElBQUksdUJBQXVCLEVBQUUsQ0FBQztZQUN0QztnQkFDRSxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDekIsQ0FBQztJQUNILENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxHQUFZO1FBQ3RDLElBQUksR0FBRyxZQUFZLFNBQVMsRUFBRSxDQUFDO1lBQzdCLE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQztRQUVELE1BQU0sS0FBSyxHQUFHLEdBQXVDLENBQUM7UUFDdEQsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUNuQyxPQUFPLElBQUksMEJBQTBCLEVBQUUsQ0FBQztRQUMxQyxDQUFDO1FBRUQsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDO1FBQ25ELE9BQU8sSUFBSSw0QkFBNEIsQ0FDckMsR0FBRyxLQUFLLENBQUMsT0FBTyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQzdELENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLEdBQUcsQ0FBUyxHQUFXO1FBQzNCLElBQUksQ0FBQztZQUNILE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFtQixHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzFFLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEMsQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBheGlvcywgeyBBeGlvc0Vycm9yLCBBeGlvc1Jlc3BvbnNlIH0gZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHsgU3RhdHVzQ29kZSB9IGZyb20gJy4vc3RhdHVzLWNvZGUuanMnO1xuaW1wb3J0IHsgQmFzZUVycm9yIH0gZnJvbSAnLi4vZXJyb3JzL2Jhc2UtZXJyb3IuanMnO1xuaW1wb3J0IHtcbiAgQ29taWNWaW5lRmlsdGVyRXJyb3IsXG4gIENvbWljSnNvbnBDYWxsYmFja01pc3NpbmdFcnJvcixcbiAgQ29taWNWaW5lT2JqZWN0Tm90Rm91bmRFcnJvcixcbiAgQ29taWNWaW5lVW5hdXRob3JpemVkRXJyb3IsXG4gIENvbWljVmluZVVybEZvcm1hdEVycm9yLFxuICBDb21pY1ZpbmVTdWJzY3JpYmVyT25seUVycm9yLFxuICBDb21pY1ZpbmVHZW5lcmljUmVxdWVzdEVycm9yLFxufSBmcm9tICcuLi9lcnJvcnMvaW5kZXguanMnO1xuaW1wb3J0IHsgUmVzcG9uc2UsIEh0dHBDbGllbnQgYXMgSHR0cENsaWVudENvbnRyYWN0IH0gZnJvbSAnLi4vdHlwZXMvaW5kZXguanMnO1xuaW1wb3J0IHsgY29udmVydFNuYWtlQ2FzZVRvQ2FtZWxDYXNlIH0gZnJvbSAnLi4vdXRpbHMvY2FzZS1jb252ZXJ0ZXIuanMnO1xuXG5leHBvcnQgY2xhc3MgSHR0cENsaWVudCBpbXBsZW1lbnRzIEh0dHBDbGllbnRDb250cmFjdCB7XG4gIHByaXZhdGUgX2h0dHA7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5faHR0cCA9IGF4aW9zLmNyZWF0ZSh7XG4gICAgICB0cmFuc2Zvcm1SZXNwb25zZTogKGRhdGE6IHVua25vd24pID0+IHtcbiAgICAgICAgcmV0dXJuIGRhdGFcbiAgICAgICAgICA/IGNvbnZlcnRTbmFrZUNhc2VUb0NhbWVsQ2FzZShKU09OLnBhcnNlKGRhdGEgYXMgc3RyaW5nKSlcbiAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVJlc3BvbnNlPFJlc3VsdD4ocmVzcG9uc2U6IEF4aW9zUmVzcG9uc2U8UmVzcG9uc2U8UmVzdWx0Pj4pIHtcbiAgICBzd2l0Y2ggKHJlc3BvbnNlLmRhdGEuc3RhdHVzQ29kZSkge1xuICAgICAgY2FzZSBTdGF0dXNDb2RlLkZpbHRlckVycm9yOlxuICAgICAgICB0aHJvdyBuZXcgQ29taWNWaW5lRmlsdGVyRXJyb3IoKTtcbiAgICAgIGNhc2UgU3RhdHVzQ29kZS5Kc29ucENhbGxiYWNrTWlzc2luZzpcbiAgICAgICAgdGhyb3cgbmV3IENvbWljSnNvbnBDYWxsYmFja01pc3NpbmdFcnJvcigpO1xuICAgICAgY2FzZSBTdGF0dXNDb2RlLk9iamVjdE5vdEZvdW5kOlxuICAgICAgICB0aHJvdyBuZXcgQ29taWNWaW5lT2JqZWN0Tm90Rm91bmRFcnJvcigpO1xuICAgICAgY2FzZSBTdGF0dXNDb2RlLlN1YnNjcmliZXJPbmx5VmlkZW86XG4gICAgICAgIHRocm93IG5ldyBDb21pY1ZpbmVTdWJzY3JpYmVyT25seUVycm9yKCk7XG4gICAgICBjYXNlIFN0YXR1c0NvZGUuVXJsRm9ybWF0RXJyb3I6XG4gICAgICAgIHRocm93IG5ldyBDb21pY1ZpbmVVcmxGb3JtYXRFcnJvcigpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZUNsaWVudEVycm9yKGVycjogdW5rbm93bikge1xuICAgIGlmIChlcnIgaW5zdGFuY2VvZiBCYXNlRXJyb3IpIHtcbiAgICAgIHJldHVybiBlcnI7XG4gICAgfVxuXG4gICAgY29uc3QgZXJyb3IgPSBlcnIgYXMgQXhpb3NFcnJvcjx7IG1lc3NhZ2U/OiBzdHJpbmcgfT47XG4gICAgaWYgKGVycm9yLnJlc3BvbnNlPy5zdGF0dXMgPT09IDQwMSkge1xuICAgICAgcmV0dXJuIG5ldyBDb21pY1ZpbmVVbmF1dGhvcml6ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGVycm9yLnJlc3BvbnNlPy5kYXRhPy5tZXNzYWdlO1xuICAgIHJldHVybiBuZXcgQ29taWNWaW5lR2VuZXJpY1JlcXVlc3RFcnJvcihcbiAgICAgIGAke2Vycm9yLm1lc3NhZ2V9JHtlcnJvck1lc3NhZ2UgPyBgLCAke2Vycm9yTWVzc2FnZX1gIDogJyd9YCxcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgZ2V0PFJlc3VsdD4odXJsOiBzdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlUmVzcG9uc2UoYXdhaXQgdGhpcy5faHR0cC5nZXQ8UmVzcG9uc2U8UmVzdWx0Pj4odXJsKSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IHRoaXMuZ2VuZXJhdGVDbGllbnRFcnJvcihlcnJvcik7XG4gICAgfVxuICB9XG59XG4iXX0=