-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCreateItems.js
More file actions
58 lines (52 loc) · 1.49 KB
/
CreateItems.js
File metadata and controls
58 lines (52 loc) · 1.49 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
const _ = require("lodash");
const encode64 = require("./encode64");
const RSM_Fetch = require("./fetch");
const RSM_ParseResponse = require("./parse_response");
const RSM_CREATEITEMS_PATH = "/AppController/commands_RSM/api/api_createItem.php";
function RSM_CreateItems(host, path, request) {
return new Promise(function (resolve, reject) {
RSM_Fetch.fetch(host, path, request).then(function (response) {
const result = RSM_ParseResponse({
"itemID": "itemID",
"result": "status"
},response)[0];
if (result.status === "OK" && result.itemID.length > 0) {
resolve(result.itemID.split(","));
} else {
reject(result.status);
}
}, function (error) {
reject(error);
});
});
}
function buildRequest(req) {
return {
RStoken: req.RStoken,
RSdata: req.items.map((item) => {
return Object.entries(item)
.map(([propertyID, value]) => {
return `${propertyID}:${encode64(value)}`
}).join(";");
}).join(","),
}
}
function RSM_CreateItemsBuilder(api_token, host) {
return {
request: {
RStoken: api_token,
items: [],
},
host,
path: RSM_CREATEITEMS_PATH,
item: function (itemProperties) {
let new_request = _.cloneDeep(this);
new_request.request.items.push(itemProperties);
return new_request;
},
send: function () {
return RSM_CreateItems(this.host, this.path, buildRequest(this.request));
}
}
}
module.exports = RSM_CreateItemsBuilder;