-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrestjs.js
70 lines (62 loc) · 2.17 KB
/
restjs.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
60
61
62
63
64
65
66
67
68
69
70
(function (exports) {
'use strict';
var baseUrl, endpoint, protocol;
exports.init = function (config) {
baseUrl = config.baseUrl + "/";
endpoint = config.endpoint;
protocol = config.protocol + "://";
return this;
};
exports.fetch = function (path, params) {
return new Promise(function(resolve, reject) {
_buildXhr("GET", path, null, params, resolve, reject);
});
};
exports.create = function (payload, params) {
return new Promise(function(resolve, reject) {
_buildXhr("POST", null, payload, params, resolve, reject);
});
};
exports.update = function (path, payload, params) {
return new Promise(function(resolve, reject) {
_buildXhr("PUT", path, payload, params, resolve, reject);
});
};
exports.remove = function (path, params) {
return new Promise(function(resolve, reject) {
_buildXhr("DELETE", path, null, params, resolve, reject);
});
};
function _buildXhr(method, path, payload, params, resolve, reject) {
var rqtUrl = _buildUrl(path, params);
var xhr = new XMLHttpRequest();
xhr.open(method, rqtUrl, true);
xhr.withCredentials = true;
xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
xhr.onload = function() {
if (xhr.status < 400)
resolve(JSON.parse(xhr.responseText));
else
reject(Error("Request failed: " + xhr.statusText));
};
xhr.onerror = function (e) {
reject(Error("Network error: "+ e));
};
xhr.send(JSON.stringify(payload));
}
function _buildUrl(path, params) {
path = (path != null) ? "/" + path : "";
params = params || undefined;
var param = "";
if (params != undefined) {
param = "?";
var i = 0;
for (var key in params) {
if (i>0) param+= "&";
param = param + key + "=" + params[key];
i++;
}
}
return protocol + baseUrl + endpoint + path + param;
}
})(this.REST = {});