@moscowcity/ym-api
Version:
Forked version of https://github.com/kontsevoye/ym-api with removed console.error
47 lines (43 loc) • 1.22 kB
text/typescript
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);
}
}