-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
61 lines (47 loc) · 1.5 KB
/
index.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
59
var jQuery = require('jquery')
module.exports = {
"handle": function(request, assigner){
var params = Object.assign({}, request, {
type: request.method,
cache: true,
url: request.uri,
data: request.body
});
if (request.credentials && request.credentials !== 'omit') {
params.xhrFields = { withCredentials: true };
}
return new Promise(function(resolve, reject){
params.success = function(body, status, response){
resolve(assigner(formatResponse(response)));
};
params.error = function(response){
if (response.status >= 200 && response.status < 400){
resolve(assigner(formatResponse(response)));
} else {
reject(assigner(formatResponse(response)));
}
};
jQuery.ajax(params);
});
}
};
function formatResponse(response){
return {
"headers": parseHeaders(response.getAllResponseHeaders()),
"status": {
"code": response.status,
"message": response.statusText
},
"body": response.responseText,
};
}
function parseHeaders(headerSting){
var headers = {};
headerSting.split("\r\n").map( function(line) {
if(line.trim() !== ""){
line = line.split(":");
headers[line.shift().trim()] = line.join(":").trim();
}
});
return headers;
}