-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrequests.js
58 lines (55 loc) · 1.75 KB
/
requests.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import axios from 'axios';
import { apiUrl } from '../constants/config';
const accessToken = localStorage.getItem('access_token');
const instance = axios.create({
baseURL: apiUrl,
timeout: 5000,
headers: {'Authorization': `Bearer ${accessToken}`},
});
export default {
methods: {
get(route, queryParameters = null) {
return this._sendRequest(instance.get(route, { params: queryParameters, }));
},
post(route, parameters = null, queryParameters = null) {
return this._sendRequest(instance.post(route, parameters, { params: queryParameters }));
},
put(route, parameters = null, queryParameters = null) {
return this._sendRequest(instance.put(route, parameters, { params: queryParameters }));
},
delete(route, parameters = null, queryParameters = null) {
return this._sendRequest(instance.delete(route, parameters, { params: queryParameters }));
},
_sendRequest(request) {
return new Promise((resolve, reject) => {
request.then(response => {
resolve(response)
}).catch(error => {
this._errorResponse(error, reject);
});
});
},
_errorResponse(error, reject) {
switch(error.response.status) {
case 401:
// Permission Error (logout)
break;
case 402:
// Your account is expired, (redirect to BUY)
break;
case 422:
// this is a validation error
let messages = [];
Object.values(error.response.data).map(message => {
messages.push(message[0]);
});
this.error( messages.join(', ') );
break;
default:
error.message = error.response.data.message;
reject(error);
break;
}
}
},
};