@ar.io/sdk
Version:
[](https://codecov.io/gh/ar-io/ar-io-sdk)
37 lines (36 loc) • 1.29 kB
JavaScript
import { createAxiosInstance } from '../utils/http-client.js';
import { FailedRequestError, NotFound, UnknownError } from './error.js';
import { Logger } from './logger.js';
export class AxiosHTTPService {
axios;
logger;
constructor({ url, logger = Logger.default, }) {
this.logger = logger;
this.axios = createAxiosInstance({
axiosConfig: {
baseURL: url,
},
logger: this.logger,
});
}
async get({ endpoint, signal, allowedStatuses = [200, 202], headers, params, }) {
this.logger.debug(`Get request to endpoint: ${endpoint} with params ${JSON.stringify(params, undefined, 2)}`);
const { status, statusText, data } = await this.axios.get(endpoint, {
headers,
signal,
params,
});
this.logger.debug(`Response status: ${status} ${statusText}`);
if (!allowedStatuses.includes(status)) {
switch (status) {
case 404:
throw new NotFound(statusText);
case 400:
throw new FailedRequestError(status, statusText);
default:
throw new UnknownError(statusText);
}
}
return data;
}
}