import axios from "axios" import { getCookie, setCookie } from "cookies-next"; import { getAuth } from "./auth"; type axiosParameters = { method : string, url : string, headers : { Authorization : string, 'Content-Type'? : string, Token? : string }, data ?: string } const renewToken = async () => { const token = await axios.get(process.env.NEXT_PUBLIC_ODOO_API_HOST + '/api/token') setCookie('token', token.data.result) return token.data.result }; const getToken = async () => { let token = getCookie('token') if (token == undefined) token = await renewToken() return token }; const odooApi = async (method : string, url : string, data = {}, headers = {}) => { try { const token = await getToken() const auth = getAuth(); const axiosParameter : axiosParameters = { method, url: process.env.NEXT_PUBLIC_ODOO_API_HOST + url, headers: { Authorization: token ? token : '', ...headers }, }; console.log('ini adalah tipe',axiosParameter) if (auth && typeof auth === 'object' && 'token' in auth) { axiosParameter.headers['Token'] = auth.token; } if (method.toUpperCase() == 'POST') axiosParameter.headers['Content-Type'] = 'application/x-www-form-urlencoded'; if (Object.keys(data).length > 0) axiosParameter.data = new URLSearchParams( Object.entries(data) ).toString(); const response = await axios(axiosParameter); return response.data; } catch (error) { console.log( JSON.stringify(error)); } } export default odooApi