1 | const FormDataFactory = require('./form-data-factory')
|
2 | const assert = require('assert')
|
3 |
|
4 | module.exports = session => ({
|
5 |
|
6 | async addVersion({
|
7 | dataid,
|
8 | fileHandler,
|
9 | apiVersion = 'v1',
|
10 | fileName = null,
|
11 | options = {}
|
12 | }) {
|
13 |
|
14 | assert(dataid != null, 'dataid cannot be null')
|
15 | assert(fileHandler != null, 'fileHandler cannot be null')
|
16 |
|
17 | const url = `api/${apiVersion}/nodes/${dataid}/versions`
|
18 |
|
19 | if (process.node) {
|
20 |
|
21 | const fsp = require('fs').promises
|
22 | const path = require('path')
|
23 |
|
24 | const f = await fsp.readFile(fileHandler)
|
25 | const name = fileName || path.basename(fileHandler)
|
26 |
|
27 | const params = {
|
28 | file: {
|
29 | file: f,
|
30 | name
|
31 | },
|
32 | ...options
|
33 | }
|
34 |
|
35 |
|
36 |
|
37 | return session.postForm(url, params)
|
38 |
|
39 | } else {
|
40 |
|
41 | const name = fileName || fileHandler.name
|
42 |
|
43 | const params = {
|
44 | file: {
|
45 | file: fileHandler,
|
46 | name
|
47 | },
|
48 | ...options
|
49 | }
|
50 |
|
51 | return session.postForm(url, params)
|
52 |
|
53 |
|
54 |
|
55 | }
|
56 | },
|
57 |
|
58 | async list(dataid) {
|
59 | const url = `api/v1/nodes/${dataid}/versions`
|
60 | return session.get(url)
|
61 | },
|
62 |
|
63 | async version(dataid, version_number = 'latest') {
|
64 |
|
65 | const url = `api/v1/nodes/${dataid}/versions/${version_number}`
|
66 | return session.get(url)
|
67 | },
|
68 |
|
69 | async promote({
|
70 | dataid,
|
71 | versionNumber,
|
72 | description = null
|
73 | }) {
|
74 | assert(dataid != null, 'dataid cannot be null')
|
75 | assert(versionNumber != null, 'number_to_keep must be an integer')
|
76 |
|
77 | const url = `api/v2/nodes/${dataid}/versions/${versionNumber}/promote`
|
78 |
|
79 | return session.postBody(url, {
|
80 | ...(!!description && {
|
81 | description
|
82 | }),
|
83 | })
|
84 | },
|
85 |
|
86 | async deleteVersion({
|
87 | dataid,
|
88 | versionNumber,
|
89 | apiVersion = 'v1',
|
90 | }) {
|
91 | assert(dataid != null, 'dataid cannot be null')
|
92 | assert(versionNumber != null, 'number_to_keep must be an integer')
|
93 |
|
94 | const url = `api/${apiVersion}/nodes/${dataid}/versions/${versionNumber}`
|
95 |
|
96 |
|
97 | return session.delete(url)
|
98 | },
|
99 |
|
100 | async purge({
|
101 | dataid,
|
102 | number_to_keep = 1
|
103 | }) {
|
104 | assert(dataid != null, 'dataid cannot be null')
|
105 | assert(!isNaN(number_to_keep), 'number_to_keep must be an integer')
|
106 |
|
107 |
|
108 |
|
109 |
|
110 |
|
111 | const url = `api/v2/nodes/${dataid}/versions`
|
112 |
|
113 | return session.deleteForm(url, {
|
114 | number_to_keep
|
115 | })
|
116 | }
|
117 |
|
118 | }) |
\ | No newline at end of file |