summaryrefslogtreecommitdiff
path: root/src/core/api
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/api')
-rw-r--r--src/core/api/biteShip.js30
-rw-r--r--src/core/api/odooApi.js36
2 files changed, 56 insertions, 10 deletions
diff --git a/src/core/api/biteShip.js b/src/core/api/biteShip.js
new file mode 100644
index 00000000..f18421d8
--- /dev/null
+++ b/src/core/api/biteShip.js
@@ -0,0 +1,30 @@
+import axios from 'axios';
+
+const biteShipAPI = async (method, url, body = {}) => {
+ try {
+ const key = process.env.NEXT_PUBLIC_BITSEHIP_KEY;
+ const baseUrl = process.env.NEXT_PUBLIC_BITE_SHIP_HOST;
+
+ const axiosParameter = {
+ method,
+ url: baseUrl + url,
+ headers: {
+ Authorization: `Bearer ${key}`, // Tambahkan "Bearer " di depan key
+ 'Content-Type': 'application/json',
+ },
+ data: body, // Tidak perlu JSON.stringify
+ };
+
+ const data = await axios(axiosParameter);
+
+ return { success: true, data: data };
+ } catch (error) {
+ console.log(error);
+ return {
+ success: false,
+ data: {},
+ };
+ }
+};
+
+export default biteShipAPI;
diff --git a/src/core/api/odooApi.js b/src/core/api/odooApi.js
index 504d097a..ab3dedb0 100644
--- a/src/core/api/odooApi.js
+++ b/src/core/api/odooApi.js
@@ -42,17 +42,30 @@ const odooApi = async (method, url, data = {}, headers = {}) => {
url: process.env.NEXT_PUBLIC_ODOO_API_HOST + url,
headers: { Authorization: token, ...headers },
};
- if (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();
+
+ if (auth) {
+ axiosParameter.headers['Token'] = auth.token;
+ }
+
+ // Tentukan format data berdasarkan metode dan data
+ if (Object.keys(data).length > 0) {
+ if (method.toUpperCase() === 'POST') {
+ // Gunakan URL-encoded untuk POST
+ axiosParameter.data = new URLSearchParams(
+ Object.entries(data)
+ ).toString();
+ axiosParameter.headers['Content-Type'] =
+ 'application/x-www-form-urlencoded';
+ } else {
+ // Gunakan JSON untuk GET/PUT atau metode lainnya
+ axiosParameter.data = data;
+ axiosParameter.headers['Content-Type'] = 'application/json';
+ }
+ }
let res = await axios(axiosParameter);
- if (res.data.status.code == 401) {
+
+ if (res.data?.status?.code === 401) {
if (connectionAttempt < maxConnectionAttempt) {
await renewToken();
return odooApi(method, url, data, headers);
@@ -62,10 +75,13 @@ const odooApi = async (method, url, data = {}, headers = {}) => {
return false;
}
}
+
return camelcaseObjectDeep(res.data.result) || [];
} catch (error) {
- // console.log(error);
+ console.error('API Error:', error);
+ throw error; // Opsional, lempar error agar bisa ditangkap di level atas
}
};
+
export default odooApi;