1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, '__esModule', { value: true });
|
4 |
|
5 | var axios = require('axios');
|
6 | var get = require('lodash.get');
|
7 | var require$$0 = require('form-data');
|
8 | var require$$0$1 = require('fs');
|
9 | var require$$1 = require('path');
|
10 | var isnil = require('lodash.isnil');
|
11 | var sha1 = require('sha1');
|
12 | var Semaphore = require('@chriscdn/promise-semaphore');
|
13 |
|
14 | function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
15 |
|
16 | var axios__default = _interopDefaultLegacy(axios);
|
17 | var get__default = _interopDefaultLegacy(get);
|
18 | var require$$0__default = /*#__PURE__*/_interopDefaultLegacy(require$$0);
|
19 | var require$$0__default$1 = /*#__PURE__*/_interopDefaultLegacy(require$$0$1);
|
20 | var require$$1__default = /*#__PURE__*/_interopDefaultLegacy(require$$1);
|
21 | var isnil__default = /*#__PURE__*/_interopDefaultLegacy(isnil);
|
22 | var sha1__default = /*#__PURE__*/_interopDefaultLegacy(sha1);
|
23 | var Semaphore__default = /*#__PURE__*/_interopDefaultLegacy(Semaphore);
|
24 |
|
25 | var formDataFactory = {
|
26 | createFormData() {
|
27 | {
|
28 | const klass = require$$0__default['default'];
|
29 | return new klass
|
30 | }
|
31 | }
|
32 | };
|
33 |
|
34 | function getInstance(baseURL) {
|
35 |
|
36 | const instance = axios__default['default'].create({
|
37 | baseURL
|
38 | });
|
39 |
|
40 | instance.interceptors.response.use(response => {
|
41 | const otcsticket = get__default['default'](response, 'headers.otcsticket');
|
42 |
|
43 | if (otcsticket) {
|
44 | instance.defaults.headers.common['OTCSTicket'] = otcsticket;
|
45 | }
|
46 | return response
|
47 | }, error => {
|
48 | return Promise.reject(error)
|
49 | });
|
50 |
|
51 | return instance
|
52 | }
|
53 |
|
54 | function axiosFactory(options) {
|
55 | const instance = getInstance(options.baseURL);
|
56 |
|
57 | const username = get__default['default'](options, 'username');
|
58 | const password = get__default['default'](options, 'password');
|
59 | const otcsticket = get__default['default'](options, 'otcsticket');
|
60 |
|
61 | if (otcsticket) {
|
62 |
|
63 | instance.defaults.headers.common['OTCSTicket'] = otcsticket;
|
64 |
|
65 | } else if (username && password) {
|
66 |
|
67 | instance.interceptors.request.use(async request => {
|
68 |
|
69 | if (request.headers.common['OTCSTicket']) {
|
70 |
|
71 | return request
|
72 |
|
73 | } else {
|
74 |
|
75 | const formData = formDataFactory.createFormData();
|
76 |
|
77 | formData.append('username', username);
|
78 | formData.append('password', password);
|
79 |
|
80 | let response = await axios__default['default'].post(`${options.baseURL}/api/v1/auth/`, formData.getBuffer(), { headers: formData.getHeaders() }) ;
|
81 |
|
82 | request.headers.common['OTCSTicket'] = get__default['default'](response, 'data.ticket');
|
83 |
|
84 | return request
|
85 | }
|
86 | });
|
87 | } else {
|
88 | throw 'You must provide an otcsticket or username and password.'
|
89 | }
|
90 |
|
91 | return instance
|
92 | }
|
93 |
|
94 | var auth = axiosFactory;
|
95 |
|
96 | const SubTypes = {
|
97 | FOLDER: 0,
|
98 | DOCUMENT: 144
|
99 | };
|
100 |
|
101 | var nodes = session => ({
|
102 |
|
103 | addablenodetypes(dataid) {
|
104 | return session.get(`api/v1/nodes/${dataid}/addablenodetypes`)
|
105 | },
|
106 |
|
107 | async addDocument(parent_id, fileHandler, fileName = null) {
|
108 |
|
109 | const url = 'api/v1/nodes';
|
110 |
|
111 | const formData = formDataFactory.createFormData();
|
112 |
|
113 | formData.append('type', SubTypes.DOCUMENT);
|
114 | formData.append('parent_id', parent_id);
|
115 |
|
116 | {
|
117 |
|
118 |
|
119 | const fsp = require$$0__default$1['default'].promises;
|
120 | const path = require$$1__default['default'];
|
121 |
|
122 | let f = await fsp.readFile(fileHandler);
|
123 | let name = fileName || path.basename(fileHandler);
|
124 |
|
125 | formData.append('file', f, name);
|
126 | formData.append('name', name);
|
127 |
|
128 | return session.post(url, formData.getBuffer(), { headers: formData.getHeaders() })
|
129 |
|
130 | }
|
131 | },
|
132 |
|
133 | addItem(type, parent_id, name, params = {}) {
|
134 | return session.postForm('api/v2/nodes', {
|
135 | type,
|
136 | parent_id,
|
137 | name,
|
138 | ...params
|
139 | })
|
140 | },
|
141 |
|
142 | node(dataid, params = {}) {
|
143 | return session.getCached(`api/v2/nodes/${dataid}`, { params })
|
144 | },
|
145 |
|
146 | ancestors(dataid, params = {}) {
|
147 | return session.get(`api/v1/nodes/${dataid}/ancestors`, { params })
|
148 | },
|
149 |
|
150 | volumeInfo(objType) {
|
151 | return session.get(`api/v1/volumes/${objType}`)
|
152 | },
|
153 |
|
154 | volumes() {
|
155 | return session.get('api/v2/volumes')
|
156 | },
|
157 |
|
158 | addFolder(parent_id, name, params = {}) {
|
159 | return this.addItem(SubTypes.FOLDER, parent_id, name, params)
|
160 | },
|
161 |
|
162 | children(dataid, params = {}) {
|
163 |
|
164 | return session.get(`api/v2/nodes/${dataid}/nodes`, { params })
|
165 | },
|
166 |
|
167 | delete(dataid) {
|
168 | return session.delete(`api/v1/nodes/${dataid}`)
|
169 | },
|
170 |
|
171 | download(dataid, version = 'v1', filePath) {
|
172 |
|
173 | {
|
174 | return session.get(`api/${version}/nodes/${dataid}/content`, { responseType: 'stream' })
|
175 | .then(response => {
|
176 | const fs = require$$0__default$1['default'];
|
177 | const writer = fs.createWriteStream(filePath);
|
178 |
|
179 | response.data.pipe(writer);
|
180 |
|
181 | return new Promise((resolve, reject) => {
|
182 | writer.on('finish', resolve);
|
183 | writer.on('error', reject);
|
184 | })
|
185 | })
|
186 | }
|
187 | }
|
188 |
|
189 | });
|
190 |
|
191 | var workflow = session => ({
|
192 |
|
193 | start(map_id) {
|
194 | return this.draftprocesses(map_id)
|
195 | .then(response => get__default['default'](response, 'data.results.draftprocess_id'))
|
196 | .then(draftprocess_id => this.draftprocesses_update(draftprocess_id))
|
197 | },
|
198 |
|
199 | draftprocesses(workflow_id) {
|
200 | return session.postForm('api/v2/draftprocesses', {workflow_id})
|
201 | },
|
202 |
|
203 | draftprocesses_update(draftprocess_id) {
|
204 | return session.get('api/v1/forms/draftprocesses/update', {
|
205 | params: {
|
206 | draftprocess_id
|
207 | }
|
208 | })
|
209 | },
|
210 |
|
211 | draftprocesses_put(draftprocess_id, body) {
|
212 | return session.putForm(`api/v2/draftprocesses/${draftprocess_id}`, { body })
|
213 | }
|
214 |
|
215 |
|
216 |
|
217 |
|
218 |
|
219 |
|
220 |
|
221 |
|
222 |
|
223 |
|
224 | });
|
225 |
|
226 | var rhcore = session => ({
|
227 | scriptNode(id, params = {}) {
|
228 | return session.get(`api/v1/rhcore/${id}`, {
|
229 | params
|
230 | })
|
231 | }
|
232 | });
|
233 |
|
234 | var members = session => ({
|
235 |
|
236 | USER: 0,
|
237 | GROUP: 1,
|
238 |
|
239 | userQuery(query, options = {}, version = 'v2') {
|
240 | const params = {
|
241 | limit: 20,
|
242 | where_type: JSON.stringify([this.USER, this.GROUP]),
|
243 | query,
|
244 | ...options
|
245 | };
|
246 |
|
247 | return session.get(`api/${version}/members`, { params })
|
248 | },
|
249 |
|
250 | member(id, version = 'v2') {
|
251 | return session.getCached(`api/${version}/members/${id}`)
|
252 | }
|
253 |
|
254 | });
|
255 |
|
256 | var versions = session => ({
|
257 |
|
258 | async addVersion(dataid, fileHandler, options = {}) {
|
259 |
|
260 | const url = `api/v1/nodes/${dataid}/versions`;
|
261 |
|
262 |
|
263 |
|
264 | {
|
265 |
|
266 | const fsp = require$$0__default$1['default'].promises;
|
267 | const path = require$$1__default['default'];
|
268 |
|
269 | let f = await fsp.readFile(fileHandler);
|
270 |
|
271 |
|
272 | const params = {
|
273 | file: {
|
274 | file: f,
|
275 | name: path.basename(fileHandler)
|
276 | },
|
277 | ...options
|
278 | };
|
279 |
|
280 |
|
281 |
|
282 | return session.postForm(url, params)
|
283 |
|
284 | }
|
285 | },
|
286 |
|
287 | async list(dataid) {
|
288 | const url = `api/v1/nodes/${dataid}/versions`;
|
289 | return session.get(url)
|
290 | },
|
291 |
|
292 | async version(dataid, version_number='latest') {
|
293 |
|
294 | const url = `api/v1/nodes/${dataid}/versions/${version_number}`;
|
295 | return session.get(url)
|
296 | }
|
297 |
|
298 | });
|
299 |
|
300 | var webreports = session => ({
|
301 |
|
302 | run(dataid, params = {}) {
|
303 | const url = `api/v1/nodes/${dataid}/output`;
|
304 | return session.get(url, { params })
|
305 | }
|
306 |
|
307 | });
|
308 |
|
309 | const semaphore = new Semaphore__default['default']();
|
310 |
|
311 | let getCache = {};
|
312 |
|
313 | var Session_1 = class Session {
|
314 |
|
315 | constructor(options) {
|
316 | this.axios = auth(options);
|
317 | }
|
318 |
|
319 | get nodes() {
|
320 |
|
321 | if (this._nodes == null) {
|
322 | this._nodes = nodes(this);
|
323 | }
|
324 |
|
325 | return this._nodes
|
326 | }
|
327 |
|
328 | get workflow() {
|
329 |
|
330 | if (this._workflow == null) {
|
331 | this._workflow = workflow(this);
|
332 | }
|
333 |
|
334 | return this._workflow
|
335 | }
|
336 |
|
337 | get rhcore() {
|
338 |
|
339 | if (this._rhcore == null) {
|
340 | this._rhcore = rhcore(this);
|
341 | }
|
342 |
|
343 | return this._rhcore
|
344 | }
|
345 |
|
346 | get members() {
|
347 |
|
348 | if (this._members == null) {
|
349 | this._members = members(this);
|
350 | }
|
351 |
|
352 | return this._members
|
353 | }
|
354 |
|
355 | get webreports() {
|
356 |
|
357 | if (this._webreports == null) {
|
358 | this._webreports = webreports(this);
|
359 | }
|
360 |
|
361 | return this._webreports
|
362 | }
|
363 |
|
364 | get versions() {
|
365 |
|
366 | if (this._versions == null) {
|
367 | this._versions = versions(this);
|
368 | }
|
369 |
|
370 | return this._versions
|
371 | }
|
372 |
|
373 | _isObject(value) {
|
374 | return value && typeof value === 'object' && value.constructor === Object
|
375 | }
|
376 |
|
377 | _objectToForm(obj) {
|
378 |
|
379 | const formData = formDataFactory.createFormData();
|
380 |
|
381 | for (let [key, value] of Object.entries(obj)) {
|
382 | if (value && value.name && value.file) {
|
383 | formData.append(key, value.file, value.name);
|
384 | } else if (Array.isArray(value) || this._isObject(value)) {
|
385 | formData.append(key, JSON.stringify(value));
|
386 | } else if (!isnil__default['default'](value)) {
|
387 |
|
388 | formData.append(key, value);
|
389 | }
|
390 | }
|
391 |
|
392 | return formData
|
393 | }
|
394 |
|
395 | get(...args) {
|
396 | return this.axios.get(...args)
|
397 | }
|
398 |
|
399 | async getCached(...args) {
|
400 | const key = sha1__default['default'](JSON.stringify(args));
|
401 |
|
402 | try {
|
403 | await semaphore.acquire(key);
|
404 |
|
405 | if (!getCache[key]) {
|
406 | getCache[key] = this.get(...args);
|
407 | }
|
408 | } finally {
|
409 | semaphore.release(key);
|
410 | }
|
411 |
|
412 | return getCache[key]
|
413 | }
|
414 |
|
415 | putForm(url, params) {
|
416 | const formData = this._objectToForm(params);
|
417 | return this.put(url, formData.getBuffer(), {
|
418 | headers: formData.getHeaders()
|
419 | })
|
420 | }
|
421 |
|
422 | postForm(url, params) {
|
423 | const formData = this._objectToForm(params);
|
424 | return this.post(url, formData.getBuffer(), {
|
425 | headers: formData.getHeaders()
|
426 | })
|
427 | }
|
428 |
|
429 | patchForm(url, params) {
|
430 | const formData = this._objectToForm(params);
|
431 | return this.patch(url, formData.getBuffer(), {
|
432 | headers: formData.getHeaders()
|
433 | })
|
434 | }
|
435 |
|
436 | post(...args) {
|
437 | return this.axios.post(...args)
|
438 | }
|
439 |
|
440 | put(...args) {
|
441 | return this.axios.put(...args)
|
442 | }
|
443 |
|
444 | delete(...args) {
|
445 | return this.axios.delete(...args)
|
446 | }
|
447 |
|
448 | options(...args) {
|
449 | return this.axios.options(...args)
|
450 | }
|
451 |
|
452 | patch(...args) {
|
453 | return this.axios.patch(...args)
|
454 | }
|
455 |
|
456 | };
|
457 |
|
458 | var auth_1 = auth;
|
459 | var Session_1$1 = Session_1;
|
460 |
|
461 | var src = {
|
462 | auth: auth_1,
|
463 | Session: Session_1$1
|
464 | };
|
465 |
|
466 | exports.Session = Session_1$1;
|
467 | exports.auth = auth_1;
|
468 | exports.default = src;
|
469 |
|