UNPKG

9 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, '__esModule', { value: true });
4
5function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
6
7var axios = _interopDefault(require('axios'));
8var lodash = _interopDefault(require('lodash.get'));
9var formData = _interopDefault(require('form-data'));
10var fs = _interopDefault(require('fs'));
11var path = _interopDefault(require('path'));
12
13var formDataFactory = {
14 createFormData() {
15 {
16 const klass = formData;
17 return new klass
18 }
19 }
20};
21
22function getInstance(baseURL) {
23
24 const instance = axios.create({
25 baseURL
26 });
27
28 instance.interceptors.response.use(response => {
29 const otcsticket = lodash(response, 'headers.otcsticket');
30
31 if (otcsticket) {
32 instance.defaults.headers.common['OTCSTicket'] = otcsticket;
33 }
34 return response
35 }, error => {
36 return Promise.reject(error)
37 });
38
39 return instance
40}
41
42function axiosFactory(options) {
43 const instance = getInstance(options.baseURL);
44
45 const username = lodash(options, 'username');
46 const password = lodash(options, 'password');
47 const otcsticket = lodash(options, 'otcsticket');
48
49 if (otcsticket) {
50
51 instance.defaults.headers.common['OTCSTicket'] = otcsticket;
52
53 } else if (username && password) {
54
55 instance.interceptors.request.use(async request => {
56
57 if (request.headers.common['OTCSTicket']) {
58
59 return request
60
61 } else {
62
63 const formData = formDataFactory.createFormData();
64
65 formData.append('username', username);
66 formData.append('password', password);
67
68 let response = await axios.post(`${options.baseURL}/api/v1/auth/`, formData.getBuffer(), { headers: formData.getHeaders() }) ;
69
70 request.headers.common['OTCSTicket'] = lodash(response, 'data.ticket');
71
72 return request
73 }
74 });
75 } else {
76 throw 'You must provide an otcsticket or username and password.'
77 }
78
79 return instance
80}
81
82var auth = axiosFactory;
83
84const SubTypes = {
85 FOLDER: 0,
86 DOCUMENT: 144
87};
88
89var nodes = session => ({
90
91 addablenodetypes(dataid) {
92 return session.get(`api/v1/nodes/${dataid}/addablenodetypes`)
93 },
94
95 async addDocument(parent_id, fileHandler, fileName = null) {
96
97 const url = 'api/v1/nodes';
98
99 const formData = formDataFactory.createFormData();
100
101 formData.append('type', SubTypes.DOCUMENT);
102 formData.append('parent_id', parent_id);
103
104 {
105 // node.js
106
107 const fsp = fs.promises;
108 const path$1 = path;
109
110 let f = await fsp.readFile(fileHandler);
111 let name = fileName || path$1.basename(fileHandler);
112
113 formData.append('file', f, name);
114 formData.append('name', name);
115
116 return session.post(url, formData.getBuffer(), { headers: formData.getHeaders() })
117
118 }
119 },
120
121 addItem(type, parent_id, name, params = {}) {
122 return session.postForm('api/v2/nodes', {
123 type,
124 parent_id,
125 name,
126 ...params
127 })
128 },
129
130 node(dataid, params = {}) {
131 return session.get(`api/v2/nodes/${dataid}`, { params })
132 },
133
134 ancestors(dataid, params = {}) {
135 return session.get(`api/v1/nodes/${dataid}/ancestors`, { params })
136 },
137
138 volumeInfo(objType) {
139 return session.get(`api/v1/volumes/${objType}`)
140 },
141
142 volumes() {
143 return session.get('api/v2/volumes')
144 },
145
146 addFolder(parent_id, name, params = {}) {
147 return this.addItem(SubTypes.FOLDER, parent_id, name, params)
148 },
149
150 children(dataid, params = {}) {
151 // https://developer.opentext.com/webaccess/#url=%2Fawd%2Fresources%2Fapis%2Fcs-rest-api-for-cs-16-s%23!%2Fnodes%2FgetSubnodes_get_15&tab=501
152 return session.get(`api/v2/nodes/${dataid}/nodes`, { params })
153 },
154
155 delete(dataid) {
156 return session.delete(`api/v1/nodes/${dataid}`)
157 }
158
159});
160
161var workflow = session => ({
162
163 start(map_id) {
164 return this.draftprocesses(map_id)
165 .then(response => lodash(response, 'data.results.draftprocess_id'))
166 .then(draftprocess_id => this.draftprocesses_update(draftprocess_id))
167 },
168
169 draftprocesses(workflow_id) {
170 return session.postForm('api/v2/draftprocesses', {workflow_id})
171 /*
172
173 return session.post('api/v2/draftprocesses', {}, {
174 params: {
175 workflow_id
176 }
177 })
178 */
179 },
180
181 draftprocesses_update(draftprocess_id) {
182 return session.get('api/v1/forms/draftprocesses/update', {
183 params: {
184 draftprocess_id
185 }
186 })
187 },
188
189 draftprocesses_put(draftprocess_id, body) {
190 return session.putForm(`api/v2/draftprocesses/${draftprocess_id}`, { body })
191 },
192
193 draftprocesses_formUpdate(draftprocess_id, values) {
194 // : {"WorkflowForm_2":"adsfasdf"}
195 const body = {
196 action: "formUpdate",
197 values
198 };
199
200 return this.draftprocesses_put(draftprocess_id, body)
201 },
202
203
204 // async start(map_id) {
205 // debugger
206 // // this API is inconsistent with above
207 // let response = await this.draftprocesses(map_id)
208
209 // let draftprocess_id = get(response, 'data.results.draftprocess_id')
210
211 // response = await this.draftprocesses_update(draftprocess_id)
212
213 // return response.data
214
215 // }
216
217
218
219
220});
221
222var rhcore = session => ({
223 scriptNode(id, params = {}) {
224 return session.get(`api/v1/rhcore/${id}`, {
225 params
226 })
227 }
228});
229
230var members = session => ({
231
232 USER: 0,
233 GROUP: 1,
234
235 // https://developer.opentext.com/awd/resources/apis/cs-rest-api-for-cs-16-s#!/members/SearchMember_get_1
236 userQuery(query, options = {}) {
237 const params = {
238 limit: 20,
239 where_type: [this.USER, this.GROUP],
240 query,
241 ...options
242 };
243
244 return session.get(`api/v2/members`, {params})
245 },
246
247 member(id) {
248 return session.get(`api/v2/members/${id}`)
249 }
250
251});
252
253var versions = session => ({
254
255 async addVersion(dataid, fileHandler, fileName = null) {
256 // ERROR: This seemed to only upload the first 2500 characters when the file extension
257 // was .lxe (e.g., and unknown mimetype). Must look into this.
258
259
260 const url = `api/v1/nodes/${dataid}/versions`;
261
262 const formData = formDataFactory.createFormData();
263
264 {
265 // node.js
266 const fsp = fs.promises;
267 const path$1 = path;
268
269 let f = await fsp.readFile(fileHandler);
270 let name = fileName || path$1.basename(fileHandler);
271
272 formData.append('file', f, name);
273 // formData.append('name', name)
274
275 return session.post(url, formData.getBuffer(), { headers: formData.getHeaders() })
276
277 }
278 },
279
280});
281
282var webreports = session => ({
283
284 run(dataid, params = {}) {
285 const url = `api/v1/nodes/${dataid}/output`;
286 return session.get(url, { params })
287 }
288
289});
290
291var Session_1 = class Session {
292
293 constructor(options) {
294 this.axios = auth(options);
295 }
296
297 get nodes() {
298 // this creates a circular reference.. bad?
299 if (this._nodes == null) {
300 this._nodes = nodes(this);
301 }
302
303 return this._nodes
304 }
305
306 get workflow() {
307 // this creates a circular reference.. bad?
308 if (this._workflow == null) {
309 this._workflow = workflow(this);
310 }
311
312 return this._workflow
313 }
314
315 get rhcore() {
316 // this creates a circular reference.. bad?
317 if (this._rhcore == null) {
318 this._rhcore = rhcore(this);
319 }
320
321 return this._rhcore
322 }
323
324 get members() {
325 // this creates a circular reference.. bad?
326 if (this._members == null) {
327 this._members = members(this);
328 }
329
330 return this._members
331 }
332
333 get webreports() {
334 // this creates a circular reference.. bad?
335 if (this._webreports == null) {
336 this._webreports = webreports(this);
337 }
338
339 return this._webreports
340 }
341
342 get versions() {
343 // this creates a circular reference.. bad?
344 if (this._versions == null) {
345 this._versions = versions(this);
346 }
347
348 return this._versions
349 }
350
351 _isObject(value) {
352 return value && typeof value === 'object' && value.constructor === Object
353 }
354
355 _objectToForm(obj) {
356
357 const formData = formDataFactory.createFormData();
358
359 for (let [key, value] of Object.entries(obj)) {
360 if (Array.isArray(value) || this._isObject(value)) {
361 formData.append(key, JSON.stringify(value));
362 } else {
363 formData.append(key, value);
364 }
365 }
366
367 return formData
368 }
369
370 get(...args) {
371 return this.axios.get(...args)
372 }
373
374 putForm(url, params) {
375 const formData = this._objectToForm(params);
376 return this.put(url, formData.getBuffer(), { headers: formData.getHeaders() })
377 }
378
379 postForm(url, params) {
380 const formData = this._objectToForm(params);
381 return this.post(url, formData.getBuffer(), { headers: formData.getHeaders() })
382 }
383
384 patchForm(url, params) {
385 const formData = this._objectToForm(params);
386 return this.patch(url, formData.getBuffer(), { headers: formData.getHeaders() })
387 }
388
389 post(...args) {
390 return this.axios.post(...args)
391 }
392
393 put(...args) {
394 return this.axios.put(...args)
395 }
396
397 delete(...args) {
398 return this.axios.delete(...args)
399 }
400
401 options(...args) {
402 return this.axios.options(...args)
403 }
404
405 patch(...args) {
406 return this.axios.patch(...args)
407 }
408
409};
410
411var src = {auth, Session: Session_1};
412var src_1 = src.auth;
413var src_2 = src.Session;
414
415exports.Session = src_2;
416exports.auth = src_1;
417exports.default = src;
418//# sourceMappingURL=index.cjs.js.map