@@ -36,7 +36,47 @@ script:
36
36
serverURL = serverURL.slice(0,-1);
37
37
}
38
38
39
- var sendRequest = function(method, uri, body) {
39
+ sendMultipart = function (uri, entryID, body) {
40
+ var requestUrl = serverURL;
41
+ if (uri.slice(-1) !== '/') {
42
+ requestUrl += '/';
43
+ }
44
+ requestUrl += uri;
45
+
46
+ var res = httpMultipart(
47
+ requestUrl,
48
+ entryID,
49
+ {
50
+ Headers: {
51
+ 'Authorization': [params.apikey],
52
+ 'Content-Type': ['multipart/form-data'],
53
+ 'Accept': ['application/json']
54
+ },
55
+ },
56
+ body,
57
+ params.insecure,
58
+ params.proxy,
59
+ undefined,
60
+ 'file'
61
+ );
62
+ if (res.StatusCode < 200 || res.StatusCode >= 300) {
63
+ throw 'Demisto REST APIs - Request Failed.\nStatus code: ' + res.StatusCode + '.\nBody: ' + JSON.stringify(res) + '.';
64
+ }
65
+ try {
66
+ var response = res.Body;
67
+ try {
68
+ response = JSON.parse(res.Body);
69
+ } catch (ex) {
70
+ // do nothing, already handled prior the try/catch
71
+ }
72
+ return {response: response};
73
+ } catch (ex) {
74
+ throw 'Demisto REST APIs - Error parsing response - ' + ex + '\nBody:' + res.Body;
75
+ }
76
+
77
+ };
78
+
79
+ var sendRequest = function(method, uri, body, raw) {
40
80
var requestUrl = serverURL;
41
81
if (uri.slice(-1) !== '/') {
42
82
requestUrl += '/';
@@ -52,7 +92,8 @@ script:
52
92
'content-type': ['application/json'],
53
93
'authorization': [params.apikey]
54
94
},
55
- Body: body
95
+ Body: body,
96
+ SaveToFile: raw
56
97
},
57
98
params.insecure,
58
99
params.proxy
@@ -61,17 +102,20 @@ script:
61
102
if (res.StatusCode < 200 || res.StatusCode >= 300) {
62
103
throw 'Demisto REST APIs - Request Failed.\nStatus code: ' + res.StatusCode + '.\nBody: ' + JSON.stringify(res) + '.';
63
104
}
64
-
65
- try {
66
- var response = res.Body;
105
+ if (raw) {
106
+ return res;
107
+ } else {
67
108
try {
68
- response = JSON.parse(res.Body);
109
+ var response = res.Body;
110
+ try {
111
+ response = JSON.parse(res.Body);
112
+ } catch (ex) {
113
+ // do nothing, already handled prior the try/catch
114
+ }
115
+ return {response: response};
69
116
} catch (ex) {
70
- // do nothing, already handled prior the try/catch
117
+ throw 'Demisto REST APIs - Error parsing response - ' + ex + '\nBody:' + res.Body;
71
118
}
72
- return {response: response};
73
- } catch (ex) {
74
- throw 'Demisto REST APIs - Error parsing response - ' + ex;
75
119
}
76
120
};
77
121
@@ -89,6 +133,21 @@ script:
89
133
return sendRequest('PUT',args.uri, args.body);
90
134
case 'demisto-api-delete':
91
135
return sendRequest('DELETE',args.uri);
136
+ case 'demisto-api-multipart':
137
+ return sendMultipart(args.uri, args.entryID, args.body);
138
+ case 'demisto-api-download':
139
+ var res = sendRequest('GET',args.uri,args.body,true);
140
+ var filename = res.Path;
141
+ if (args.filename) {
142
+ filename = args.filename;
143
+ } else {
144
+ var disposition = res.Headers['Content-Disposition'][0].split('=');
145
+ if (disposition.length === 2) {
146
+ filename = disposition[1];
147
+ }
148
+ }
149
+ var desc = args.description || '';
150
+ return ({Type: entryTypes.file, FileID: res.Path, File: filename, Contents: desc});
92
151
default:
93
152
throw 'Demisto REST APIs - unknown command';
94
153
}
@@ -129,3 +188,26 @@ script:
129
188
description : Request URI (i.e. /user)
130
189
description : send HTTP DELETE request
131
190
execution : true
191
+ - name : demisto-api-download
192
+ arguments :
193
+ - name : uri
194
+ required : true
195
+ description : Request URI
196
+ - name : filename
197
+ description : File name of download
198
+ - name : description
199
+ description : Description of file entry
200
+ description : Download files from Demisto server
201
+ - name : demisto-api-multipart
202
+ arguments :
203
+ - name : uri
204
+ required : true
205
+ description : Request URI
206
+ - name : entryID
207
+ required : true
208
+ description : File entry ID
209
+ - name : body
210
+ description : Request body
211
+ description : Send HTTP Multipart request to upload files to Demisto server
212
+ runonce : false
213
+ releaseNotes : Added demisto-api-multipart and demisto-api-download commands to upload and download files from demisto server
0 commit comments