@phasesdk/api-client-for-economic
Version:
e-conomic REST API Library for Node.js is a powerful tool designed to simplify integration with the e-conomic platform for developers building Node.js applications. With this library, developers can effortlessly leverage the full functionality of the e-co
55 lines (46 loc) • 1.19 kB
text/typescript
import axios, { AxiosError } from "axios";
import { HttpRequest, HttpResponse } from "../types/Http.type";
abstract class HttpClient {
abstract getUrl(): string;
baseUrl() {
const url = this.getUrl();
return url;
}
/**
* @type {Request}
*/
request: HttpRequest;
/**
* Assign values to the private variable
* @constructor
* @param requestObj
*/
constructor(requestData: HttpRequest) {
this.request = requestData;
}
/**
* Http call
*
* @returns Promise<HttpResponse>
*/
async call<ResponseType = any>(): Promise<HttpResponse<ResponseType>> {
try {
let response = await axios({ ...this.request, baseURL: this.baseUrl() });
let responseData: HttpResponse = {
status: response.status,
statusText: response.statusText,
headers: response.headers,
request: response.request,
data: response.data,
};
return responseData;
} catch (e) {
if (e instanceof AxiosError) {
let statusCode = e.response?.status ?? 0;
let errorMessage = e.response?.data?.error_description ?? e.message;
}
throw e;
}
}
}
export default HttpClient;