You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

61 lines
1.6 KiB

import axios from "axios";
const API_ENDPOINT = process.env.REACT_APP_API_ENDPOINT;
// If testing, use localStorage polyfill, else use browser localStorage
const localStorage = global.process && process.env.NODE_ENV === "test"
? // eslint-disable-next-line import/no-extraneous-dependencies
require("localStorage")
: global.window.localStorage;
function headers() {
const token = localStorage.getItem("userToken") || "";
let header = {
Accept: "application/json",
"Content-Type": "application/json"
};
if (token) {
header["Authorization"] = `Token ${token}`;
}
return header;
}
const apiInstance = axios.create({
baseURL: API_ENDPOINT,
timeout: 3000
});
export function get(url, params = {}) {
return apiInstance
.get(url, { params, headers: headers() })
.then(response => response.data)
.catch(error => Promise.reject(error));
}
export function post(url, data) {
return apiInstance
.post(url, data, { headers: headers() })
.then(response => response.data)
.catch(error => Promise.reject(error));
}
export function put(url, data) {
return apiInstance
.put(url, data, { headers: headers() })
.then(response => response.data)
.catch(error => Promise.reject(error));
}
export function patch(url, data) {
return apiInstance
.patch(url, data, { headers: headers() })
.then(response => response.data)
.catch(error => Promise.reject(error));
}
export function del(url) {
return apiInstance
.delete(url, { headers: headers() })
.then(response => response.data)
.catch(error => Promise.reject(error));
}