-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathclient.js
More file actions
110 lines (95 loc) · 2.22 KB
/
client.js
File metadata and controls
110 lines (95 loc) · 2.22 KB
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
import Axios from 'axios';
import {
AccessForbiddenError,
UnauthorizedError,
NetworkError,
ServerError,
NotFoundError
} from './errors';
export const REQUEST_POST = 'POST'
export const REQUEST_GET = 'GET'
export const REQUEST_DELETE = 'DELETE'
function getAuthorizationHeader(token = null) {
if (!token)
token = localStorage.getItem('token')
if(!token) {
return []
}
return ['Authorization', 'Token ' + token]
}
export function APIRequest(
request_method,
url,
params = null,
data = null,
headers = {},
add_authorization = true,
token = null,
csrf = null
) {
return new Promise((resolve, reject) => {
let final_headers = headers;
if (add_authorization) {
let h = null
if (!token)
h = getAuthorizationHeader()
else if (typeof (token) == 'function')
h = getAuthorizationHeader(token())
else
h = getAuthorizationHeader(token)
if(h && h.length > 1) {
final_headers[h[0]] = h[1];
}
}
if (csrf) {
let h = null
if (typeof (csrf) == 'function')
h = csrf()
else
h = csrf
final_headers['X-CSRFToken'] = h;
}
Axios({
url: url,
data: data,
params: params,
method: request_method,
headers: final_headers,
withCredentials: true
}).then((response) => {
let d = response.data;
if (d.status) {
resolve(d)
} else {
HandleAPIError(d.err_cd).then((res) => {
resolve(d)
}, (err) => {
reject(res)
})
}
}, (error) => {
if (!error.response) {
reject(new NetworkError())
} else {
let response = error.response
if (response.status == 401){
reject(new UnauthorizedError())
} else if (response.status == 403) {
reject(new AccessForbiddenError())
} else if (response.status == 404) {
reject(new NotFoundError())
} else if (response.status == 500) {
reject(new ServerError())
} else {
reject(response)
}
}
})
})
}
export function HandleAPIError(err_cd) {
// To be implemented
return new Promise((resolve, reject) => {
resolve(true)
})
}