import axios, { AxiosResponse } from "axios"; import { request } from "http"; import { IBusiness } from "./IBusiness"; import { IOutlet } from "./IOutlet"; import { IReceipt } from "./IReceipt"; axios.defaults.baseURL = "http://localhost:4000"; const config = { headers: { Authorization: `Bearer ${localStorage.token}` }, }; const responseBody = (response: AxiosResponse) => response.data; const sleep = (ms: number) => (response: AxiosResponse) => new Promise((resolve) => setTimeout(() => resolve(response), ms) ); const requests = { get: (url: string) => axios.get(url).then(sleep(1000)).then(responseBody), getMy: (url: string) =>axios.get(url, {headers: { Authorization: `Bearer ${localStorage.token}` },}) .then(sleep(1000)) .then(responseBody), post: (url: string, body: {}) =>axios.post(url, body) .then(sleep(1000)) .then(responseBody), postMy: (url: string, body: {}) =>axios.post(url, body, config) .then(sleep(1000)) .then(responseBody), put: (url: string, body: {}) =>axios.put(url, body, config) .then(sleep(1000)) .then(responseBody), del: (url: string) => axios.delete(url) .then(sleep(1000)) .then(responseBody), postForm: (url: string, file: Blob) => { let formData = new FormData(); formData.append("File", file); return axios .post(url, formData, { headers: { "Content-type": "multipart/form-data" }, }) .then(responseBody); }, }; export const setAuthToken = (token: string) => { if (token) { axios.defaults.headers.common["x-auth-token"] = token; } else { delete axios.defaults.headers.common["x-auth-token"]; } }; export const Outlets = { list: (): Promise => requests.get("/outlet"), details: (id: string) => requests.get(`/outlets/${id}`), create: (outlet: IOutlet) => requests.post("/outlets", outlet), update: (outlet: IOutlet) => requests.put(`/outlets/3`, outlet), delete: (id: string) => requests.del(`/outlets/${id}`), }; export const Auth = { /** * * @param loginCredential * { "username": "inshaf_cashier", "password": "127149" } * @returns { "id": "275d9f12-aa3a-4e80-97a5-db30b21858d6", "email": "inshafowners@gmail.com", "username": "inshaf_cashier", "password": "$2b$10$8t60uIiFUKUNqzOkFW/gYuS8jsMlaouk8HYTOgpmPEpDcbTtF.euy", "salt": "$2b$10$8t60uIiFUKUNqzOkFW/gYu", "mobileNumber": "inshaf_cashier", "role": "CASHIER", "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6Imluc2hhZl9jYXNoaWVyIiwicm9sZSI6IkNBU0hJRVIiLCJpYXQiOjE2Mjc0NDQ4MDgsImV4cCI6MTYzMTA0NDgwOH0.up3zs1wPgodGKvegx4iy4p4MMGOT-XSEhJJJ_C2fPOo" } */ login: (loginCredential: any): Promise => requests.post(`/user/login`, loginCredential), register: (ownerDetails: any): Promise => requests.post(`/user/owner/register`, ownerDetails), loadUser: (): Promise => { return axios.get("/user", config); }, }; export const Business = { list: (): Promise => requests.getMy("/business"), details: (id: string) => requests.get(`/business/${id}`), create: (business: any): Promise => requests.postMy("/business", business), update: (business: IBusiness) => requests.put(`/business/`, business), delete: (id: string) => requests.del(`/business/${id}`), }; export const Receipt = { list: (): Promise => requests.getMy("/receipt"), details: (id: string) => requests.get(`/receipt/${id}`), create: (receipt: any): Promise => requests.postMy("/receipt", receipt), update: (receipt: IReceipt) => requests.put(`/receipt/`, receipt), delete: (id: string) => requests.del(`/receipt/${id}`), };