UNPKG

@moscowcity/ym-api

Version:

Forked version of https://github.com/kontsevoye/ym-api with removed console.error

47 lines (43 loc) 1.22 kB
import axios, { AxiosRequestConfig } from "axios"; import { HttpClientInterface, Method, Response, RequestInterface, } from "./types"; export default class HttpClient implements HttpClientInterface { async _sendRequestAxios( method: Method, request: RequestInterface ): Promise<Response> { const axiosRequest: AxiosRequestConfig = { method, url: encodeURI(request.getURL()), headers: request.getHeaders(), data: {}, }; if (["PUT", "POST", "DELETE", "PATCH"].includes(method.toUpperCase())) { axiosRequest.data = request.getBodyDataString(); axiosRequest.headers = { ...axiosRequest.headers, ...{ "content-type": "application/x-www-form-urlencoded" }, }; } try { const { data } = await axios(axiosRequest); if (data.result) { return data.result; } else { return data; } } catch (e: any) { throw new Error(`Request failed: ${e.message}`); } } get(request: RequestInterface): Promise<Response> { return this._sendRequestAxios("get", request); } post(request: RequestInterface): Promise<Response> { return this._sendRequestAxios("post", request); } }