import axios from "axios"; import {setupInterceptorsTo} from "./interceptors"; setupInterceptorsTo(axios); export interface Response { status: number; statusText: string; data: T; } export class Axios { host: string; headers?: any; constructor(opt: { host: string; headers?: any }) { this.host = opt.host; this.headers = opt.headers; } private generateQuerystring(parameters: any): string { return Object.keys(parameters) .map(function (key) { return ( encodeURIComponent(key) + "=" + encodeURIComponent(parameters[key]) ); }) .join("&"); } private generateURL(api: string, parameters: any): string { const qs = this.generateQuerystring(parameters); if (qs != "") { return this.host.concat(api, "?", qs); } return this.host.concat(api); } get, D = any>( api: string, paramters?: any, headers?: any ): Promise { const url = this.generateURL(api, paramters); const mergeHeadrs = { ...this.headers, ...headers }; return axios.get(url, { headers: mergeHeadrs }); } post, D = any>( api: string, data: any, paramters?: any, headers?: any ): Promise { const url = this.generateURL(api, paramters); const mergeHeadrs = { ...this.headers, ...headers }; return axios.post(url, data, { headers: mergeHeadrs }); } put, D = any>( api: string, data: any, paramters?: any, headers?: any ): Promise { const url = this.generateURL(api, paramters); const mergeHeadrs = { ...this.headers, ...headers }; return axios.put(url, data, { headers: mergeHeadrs }); } patch, D = any>( api: string, data: any, paramters?: any, headers?: any ): Promise { const url = this.generateURL(api, paramters); const mergeHeadrs = { ...this.headers, ...headers }; return axios.patch(url, data, { headers: mergeHeadrs }); } delete, D = any>( api: string, paramters?: any, headers?: any ): Promise { const url = this.generateURL(api, paramters); const mergeHeadrs = { ...this.headers, ...headers }; return axios.delete(url, { headers: mergeHeadrs }); } }