import { ofetch } from 'ofetch' import type { ResponseType } from '../../services/http/omySetup' import type { HttpType } from '../http/client' export type HttpClientType = 'axios' | 'ofetch' export const omyHttp = ({ api }: HttpType) => { const API_URL = `${api.url}/` return { get: async ( endpoint: string, options?: Record, ): Promise => { try { const response = await ofetch(`${API_URL}${endpoint}`, { method: 'GET', ...options, }) if (options?.responseType) { return Promise.resolve(response) as Promise } return Promise.resolve(response) as unknown as Promise } catch (error: unknown) { return Promise.resolve({ errors: error as Error, }) as unknown as Promise } }, post: async ( endpoint: string, params: Record | BodyInit, options?: Record, ): Promise => { try { const response = await ofetch(`${API_URL}${endpoint}`, { method: 'POST', body: params, ...options, }) return Promise.resolve(response) as unknown as Promise } catch (error: unknown) { return Promise.resolve({ errors: error as Error, }) as unknown as Promise } }, put: async ( endpoint: string, params: Record | BodyInit, options?: Record, ): Promise => { try { const response = await ofetch(`${API_URL}${endpoint}`, { method: 'PUT', body: params, ...options, }) return Promise.resolve(response) as unknown as Promise } catch (error: unknown) { return Promise.resolve({ errors: error as Error, }) as unknown as Promise } }, delete: async (endpoint: string): Promise => { try { const response = await ofetch(`${API_URL}${endpoint}`, { method: 'DELETE', }) return Promise.resolve(response) as unknown as Promise } catch (error) { return Promise.resolve({ errors: error as Error, }) as unknown as Promise } }, } }