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
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)); |
|
}
|
|
|