-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathUpdateItem.js
More file actions
48 lines (42 loc) · 1.26 KB
/
UpdateItem.js
File metadata and controls
48 lines (42 loc) · 1.26 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
const _ = require("lodash");
const encode64 = require("./encode64");
const RSM_Fetch = require("./fetch");
const RSM_ParseResponse = require("./parse_response");
const RSM_UPDATEITEM_PATH = "/AppController/commands_RSM/api/api_updateItem.php";
function RSM_UpdateItem(host, path, request) {
return new Promise(function (resolve, reject) {
RSM_Fetch.fetch(host, path, request).then(function (response) {
const result = RSM_ParseResponse({
"result": "status"
},response)[0];
if (result.status === "OK") {
resolve(result.status);
} else {
reject(result.status);
}
}, function (error) {
reject(error);
});
});
}
function buildProps(props) {
return Object.entries(props)
.map(([prop, value]) => `${prop}:${encode64(value)}`).join(";")
}
function RSM_UpdateItemBuilder(api_token, host, itemType) {
return {
request: {
RStoken: api_token,
itemTypeID: itemType,
},
host,
path: RSM_UPDATEITEM_PATH,
update: function (id, newProps) {
let new_request = _.clone(this.request);
new_request.RSitemID = id;
new_request.RSdata = buildProps(newProps);
return RSM_UpdateItem(this.host, this.path, new_request);
}
}
}
module.exports = RSM_UpdateItemBuilder;