UNPKG

@ar.io/sdk

Version:

[![codecov](https://codecov.io/gh/ar-io/ar-io-sdk/graph/badge.svg?token=7dXKcT7dJy)](https://codecov.io/gh/ar-io/ar-io-sdk)

37 lines (36 loc) 1.29 kB
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; } }