summaryrefslogtreecommitdiff
path: root/app/lib/api/odooApi.ts
diff options
context:
space:
mode:
authortrisusilo48 <tri.susilo@altama.co.id>2024-10-21 14:54:11 +0700
committertrisusilo48 <tri.susilo@altama.co.id>2024-10-21 14:54:11 +0700
commit83d1a1c558293e1b14c9a5847628e7661f749c66 (patch)
tree5f083f90192df0fc2aff41e3dd1c3c84f2592352 /app/lib/api/odooApi.ts
parent30c5eb5776fcc60f023ad6aa51153cb375c87930 (diff)
initial commit
Diffstat (limited to 'app/lib/api/odooApi.ts')
-rw-r--r--app/lib/api/odooApi.ts56
1 files changed, 56 insertions, 0 deletions
diff --git a/app/lib/api/odooApi.ts b/app/lib/api/odooApi.ts
new file mode 100644
index 0000000..c2c9d82
--- /dev/null
+++ b/app/lib/api/odooApi.ts
@@ -0,0 +1,56 @@
+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 \ No newline at end of file