import { AxiosResponse } from "axios"; import client from "../queries/client"; class BaseApi { prefix: string; constructor(prefix: string) { this.prefix = prefix; } private createFormdata(object?: LooseObject) { if (object) { const form = new FormData(); for (const key in object) { const data = object[key]; if (data instanceof Array) { if (data.length > 0) { data.forEach((val) => form.append(key, val)); } else { form.append(key, ""); } } else { form.append(key, object[key]); } } return form; } else { return undefined; } } protected async get(path: string, params?: LooseObject) { const response = await client.axios.get(this.prefix + path, { params }); return response.data; } protected post( path: string, formdata?: LooseObject, params?: LooseObject ): Promise> { const form = this.createFormdata(formdata); return client.axios.post(this.prefix + path, form, { params }); } protected patch( path: string, formdata?: LooseObject, params?: LooseObject ): Promise> { const form = this.createFormdata(formdata); return client.axios.patch(this.prefix + path, form, { params }); } protected delete( path: string, formdata?: LooseObject, params?: LooseObject ): Promise> { const form = this.createFormdata(formdata); return client.axios.delete(this.prefix + path, { params, data: form }); } } export default BaseApi;