UNPKG

tempnumber-client

Version:

temp-number.org SMS Typescript client

67 lines (66 loc) 2.5 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Base = void 0; const axios_1 = __importDefault(require("axios")); const exceptions_1 = require("./exceptions"); class Base { constructor(config) { this.apiKey = config.apiKey; this.baseUrl = config.baseUrl || 'https://business.temp-number.org/api/v1'; this.axios = axios_1.default.create({ baseURL: this.baseUrl, headers: { 'X-API-Key': this.apiKey, 'content-type': 'application/json' } }); } setCustomHeader(key, value) { this.axios.defaults.headers[key] = value; } removeCustomHeader(key) { if (this.axios.defaults.headers[key]) delete this.axios.defaults.headers[key]; } async apiCall(enpoint, data, method = 'get') { let response; try { response = await this.axios.request({ url: enpoint, method: method, data: method !== 'get' ? data : undefined, params: method === 'get' ? data : undefined }); } catch (err) { if (err.isAxiosError === true && err.response && err.response.status) { switch (err.response.status) { case 401: throw new exceptions_1.UnauthorizedException(err); case 429: const exc = new exceptions_1.TooManyRequestsException(err); exc.setHeader(err.response.headers); throw exc; case 400: throw new exceptions_1.InvalidRequestParamsException(err); case 404: throw new exceptions_1.ResourceNotFoundException(err); case 409: throw new exceptions_1.ResourceBadStateException(err); case 503: throw new exceptions_1.ServiceUnavailableException(err); default: throw new exceptions_1.InternalException(err); } } else { throw new exceptions_1.InternalException(err); } } return response; } } exports.Base = Base;