// src/api/request.js import { formatApiResponse } from '../utils/response'; import { oslogApi, apiGo } from './axiosClient'; /** * Generic Request Helper */ const request = async ({ isApiGo = false, method = 'get', endpoint = '', suffix = '', data = null, customUrl = '', axiosConfig = {} }) => { const url = customUrl || `${endpoint}${suffix}`; try { const client = isApiGo ? apiGo : oslogApi; const response = await client({ method, url, data, // highest priority ...axiosConfig }); return response } catch (error) { return formatApiResponse(error); } }; /** * CREATE NEW * POST /endpoint/new */ export const newRequest = ( endpoint, data = null, axiosConfig = {} ) => request({ method: 'post', endpoint, suffix: '/new', data, axiosConfig }); /** * ADD * POST /endpoint/add */ export const addRequest = ( endpoint, data = null, axiosConfig = {} ) => request({ method: 'post', endpoint, suffix: '/add', data, axiosConfig }); /** * GET BY ID * GET /endpoint/:id */ export const getByIdRequest = ( id, endpoint, axiosConfig = {} ) => request({ method: 'get', endpoint, suffix: `/${id}`, axiosConfig }); /** * EDIT * PUT /endpoint/edit/:id */ export const editRequest = ( id, endpoint, data = null, axiosConfig = {} ) => request({ method: 'put', endpoint, suffix: `/edit/${id}`, data, axiosConfig }); /** * DELETE * DELETE /endpoint/delete/:id */ export const deleteRequest = ( id, endpoint, data = null, axiosConfig = {} ) => request({ method: 'delete', endpoint, suffix: `/delete/${id}`, data, axiosConfig }); /** * SEARCH * POST /endpoint/search */ export const searchRequest = ( endpoint, data = null, axiosConfig = {} ) => { const timezone = -new Date().getTimezoneOffset() / 60; return request({ method: 'post', endpoint, suffix: '/search', data, axiosConfig: { ...axiosConfig, params: { tz: timezone, ...(axiosConfig.params || {}) } } }); }; /** * CUSTOM REQUEST */ export const customRequest = ({ method = 'get', url = '', data = null, isApiGo = false, axiosConfig = {} }) => request({ method, customUrl: url, data, isApiGo, axiosConfig }); /** * EXPORT OBJECT */ export const apiRequest = { new: newRequest, add: addRequest, getById: getByIdRequest, edit: editRequest, delete: deleteRequest, search: searchRequest, custom: customRequest };