-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
87 lines (81 loc) · 2.51 KB
/
index.js
File metadata and controls
87 lines (81 loc) · 2.51 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
/**
* Created by mohitbhansali on 26/03/18.
*/
"use strict";
let request = require("request");
let IntegrationKit = require("./integration").IntegrationKit;
class AppInstance {
constructor(config) {
this.config = config;
if(!this.config.repoUrl) {
this.config.repoUrl = 'https://hub.appsfly.io';
}
}
exec(module_handle, intent, payload, userID) {
userID = userID || "generic";
payload = payload || {};
return new Promise((resolve, reject) => {
let body = {
intent: intent,
data: payload
};
if(!this.config.secret){
request.post({
url:this.config.repoUrl + "/executor/exec",
method:"POST",
json:body,
headers:{
"X-Module-Handle":module_handle,
"X-App-Key":this.config.appKey,
"X-UUID":userID
}
}, function(error, response, body){
if(response.statusCode >=400){
reject(body.error);
}
else{
resolve(body);
}
})
}
else{
IntegrationKit.generateChecksum(body, this.config.secret, (err, data) => {
if(!err){
request({
url:this.config.repoUrl + "/executor/exec",
method:"POST",
body:data,
headers:{
"X-Module-Handle":module_handle,
"X-App-Key":this.config.appKey,
"X-UUID":userID,
"X-Encrypted":true
}
}, (err, response, body) => {
if(response.statusCode >=400){
reject(body);
}
else{
IntegrationKit.verifyChecksum(body, this.config.secret, (err, response) => {
if(!err) {
resolve(response);
}
else{
var checksumError = new Error();
checksumError.message = "Checksum not verified";
checksumError.code = 403;
reject(checksumError);
}
});
}
});
}
else{
reject(err);
}
})
}
});
}
}
module.exports = AppInstance