Advertisement
Guest User

Untitled

a guest
Oct 14th, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.76 KB | None | 0 0
  1. import axios from "axios"
  2.  
  3. const getAxiosClient = (baseUrl = null) => {
  4.  
  5. baseUrl = null !== baseUrl ? baseUrl : API_BASE_URL
  6.  
  7. const options = {
  8. baseURL : baseUrl,
  9. withCredentials : true,
  10. timeout : 30000
  11. }
  12.  
  13. const token = "" // get stored token
  14.  
  15. const client = axios.create(options);
  16.  
  17. client.interceptors.request.use(
  18.  
  19. config => {
  20.  
  21. if (token) {
  22. config.headers["x-access-token"] = token // Set token
  23. }
  24.  
  25. config.headers["Content-Type"] = "application/json"
  26.  
  27. return config;
  28.  
  29. },
  30. error => Promise.reject(error)
  31. );
  32.  
  33. // Add a response interceptor
  34. client.interceptors.response.use(response => {
  35.  
  36. if(
  37. ("undefined" === typeof response) ||
  38. (response.status < 200)
  39. ){
  40. return Promise.reject(response)
  41. }
  42.  
  43. return response.data
  44.  
  45. }, error => {
  46.  
  47. let { response } = error
  48.  
  49. if("ECONNABORTED" === error.code){
  50. return Promise.reject(new Error("Request timeout"));
  51. }
  52.  
  53. else if ("[object Object]" === Object.prototype.toString.call(response))
  54. {
  55. let message = response.statusText
  56.  
  57. if("undefined" !== typeof response.status)
  58. {
  59.  
  60. if("string" === typeof response.data.message){
  61.  
  62. message = response.data.message
  63.  
  64. if("Invalid session" === message){
  65. onInvalidSession()
  66. }
  67. }
  68.  
  69. }
  70.  
  71. let newError = new Error(message)
  72. newError.status = response.status
  73. return Promise.reject(newError)
  74. }
  75.  
  76. else{
  77. return Promise.reject(error);
  78. }
  79.  
  80. });
  81.  
  82. return client
  83. }
  84.  
  85. export default getAxiosClient
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement