tempnumber-client
Version:
temp-number.org SMS Typescript client
67 lines (66 loc) • 2.5 kB
JavaScript
;
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;