· 6 years ago · Jan 05, 2019, 03:20 PM
1import axios from "axios";
2import {getHeader} from "./GetHeader";
3import {AUTHORIZATION, JWT_ACCESS_TOKEN_KEY} from "../Text/constants";
4import {getToken} from "./GetToken";
5
6const queryString = require('qs');
7
8const _request = async (url, method, data, headers={headers:{}}) =>{
9 headers = {...headers.headers, ...getHeader()};
10 return axios({
11 url:url,
12 method:method,
13 data:data,
14 headers
15 }).then(r => r)
16 .catch(e => {
17 if(e.response.status === 401){
18 if(getToken().refresh_token){
19 axios({
20 url:AUTHORIZATION + 'oauth/token',
21 method: 'post',
22 data: queryString.stringify({
23 grant_type:'refresh_token',
24 refresh_token:localStorage.getItem(JWT_ACCESS_TOKEN_KEY).refresh_token
25 }),
26 headers:{Authorization:'Basic dXNlcjp1c2Vy'}
27 }).then(r => {
28 localStorage.setItem(JWT_ACCESS_TOKEN_KEY, JSON.stringify(r.data));
29 return axios({
30 url:"http://localhost:8090/authorization/oauth/token",
31 method:"post",
32 data:data,
33 headers
34 }).then(r => r)
35 .catch(e => {throw e})
36 })
37 .catch(e => {throw e})
38 }
39 }
40 else throw e;
41 });
42};
43
44export default _request;