import { formatResponseApi } from '../serializer' import type { HttpClient } from '../types' import type { SerializerResponseApi } from '../types' type Method = 'get' | 'post' | 'put' | 'delete' type HttpBuilder = { method: Method endpointApi: string paramsApi?: Record response: Response } const endpointCompare = ( endpoint: string, endpointApi: string, response: Response, ) => { if (endpoint === endpointApi) { return Promise.resolve( formatResponseApi(response as SerializerResponseApi), ) as Promise } return Promise.reject({ errors: ['endPoint error'] }) } export const httpBuilder = ({ method, endpointApi, paramsApi, response, }: HttpBuilder) => { const apiResponse = ( endpoint: string, params?: Record, ): Promise => { if (params) { if (JSON.stringify(params) === JSON.stringify(paramsApi)) { return endpointCompare(endpoint, endpointApi, response) } return Promise.reject({ errors: ['input error'] }) } else { return endpointCompare(endpoint, endpointApi, response) } } return { [method]: ( endpoint: string, params?: Record, ): Promise => apiResponse(endpoint, params), } as unknown as HttpClient }