Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import axios from "axios"
- const getAxiosClient = (baseUrl = null) => {
- baseUrl = null !== baseUrl ? baseUrl : API_BASE_URL
- const options = {
- baseURL : baseUrl,
- withCredentials : true,
- timeout : 30000
- }
- const token = "" // get stored token
- const client = axios.create(options);
- client.interceptors.request.use(
- config => {
- if (token) {
- config.headers["x-access-token"] = token // Set token
- }
- config.headers["Content-Type"] = "application/json"
- return config;
- },
- error => Promise.reject(error)
- );
- // Add a response interceptor
- client.interceptors.response.use(response => {
- if(
- ("undefined" === typeof response) ||
- (response.status < 200)
- ){
- return Promise.reject(response)
- }
- return response.data
- }, error => {
- let { response } = error
- if("ECONNABORTED" === error.code){
- return Promise.reject(new Error("Request timeout"));
- }
- else if ("[object Object]" === Object.prototype.toString.call(response))
- {
- let message = response.statusText
- if("undefined" !== typeof response.status)
- {
- if("string" === typeof response.data.message){
- message = response.data.message
- if("Invalid session" === message){
- onInvalidSession()
- }
- }
- }
- let newError = new Error(message)
- newError.status = response.status
- return Promise.reject(newError)
- }
- else{
- return Promise.reject(error);
- }
- });
- return client
- }
- export default getAxiosClient
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement