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