@or-sdk/files 0.20.1-269.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/Files.js +382 -0
- package/dist/cjs/Files.js.map +1 -0
- package/dist/cjs/constants.js +5 -0
- package/dist/cjs/constants.js.map +1 -0
- package/dist/cjs/index.js +21 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/types.js +3 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/esm/Files.js +215 -0
- package/dist/esm/Files.js.map +1 -0
- package/dist/esm/constants.js +2 -0
- package/dist/esm/constants.js.map +1 -0
- package/dist/esm/index.js +3 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/types.js +2 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/types/Files.d.ts +19 -0
- package/dist/types/constants.d.ts +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/types.d.ts +72 -0
- package/package.json +29 -0
- package/src/Files.ts +299 -0
- package/src/constants.ts +1 -0
- package/src/index.ts +2 -0
- package/src/types.ts +96 -0
- package/tsconfig.esm.json +9 -0
- package/tsconfig.json +7 -0
- package/tsconfig.types.json +9 -0
|
@@ -0,0 +1,382 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __extends = (this && this.__extends) || (function () {
|
|
3
|
+
var extendStatics = function (d, b) {
|
|
4
|
+
extendStatics = Object.setPrototypeOf ||
|
|
5
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
+
return extendStatics(d, b);
|
|
8
|
+
};
|
|
9
|
+
return function (d, b) {
|
|
10
|
+
if (typeof b !== "function" && b !== null)
|
|
11
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
+
extendStatics(d, b);
|
|
13
|
+
function __() { this.constructor = d; }
|
|
14
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
+
};
|
|
16
|
+
})();
|
|
17
|
+
var __assign = (this && this.__assign) || function () {
|
|
18
|
+
__assign = Object.assign || function(t) {
|
|
19
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
20
|
+
s = arguments[i];
|
|
21
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
22
|
+
t[p] = s[p];
|
|
23
|
+
}
|
|
24
|
+
return t;
|
|
25
|
+
};
|
|
26
|
+
return __assign.apply(this, arguments);
|
|
27
|
+
};
|
|
28
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
29
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
30
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
31
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
32
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
33
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
34
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
38
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
39
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
40
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
41
|
+
function step(op) {
|
|
42
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
43
|
+
while (_) try {
|
|
44
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
45
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
46
|
+
switch (op[0]) {
|
|
47
|
+
case 0: case 1: t = op; break;
|
|
48
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
49
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
50
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
51
|
+
default:
|
|
52
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
53
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
54
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
55
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
56
|
+
if (t[2]) _.ops.pop();
|
|
57
|
+
_.trys.pop(); continue;
|
|
58
|
+
}
|
|
59
|
+
op = body.call(thisArg, _);
|
|
60
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
61
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
65
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
66
|
+
if (ar || !(i in from)) {
|
|
67
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
68
|
+
ar[i] = from[i];
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
72
|
+
};
|
|
73
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
74
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
75
|
+
};
|
|
76
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
77
|
+
exports.Files = void 0;
|
|
78
|
+
var axios_1 = __importDefault(require("axios"));
|
|
79
|
+
var base_1 = require("@or-sdk/base");
|
|
80
|
+
var constants_1 = require("./constants");
|
|
81
|
+
var Files = (function (_super) {
|
|
82
|
+
__extends(Files, _super);
|
|
83
|
+
function Files(params) {
|
|
84
|
+
var token = params.token, discoveryUrl = params.discoveryUrl, serviceUrl = params.serviceUrl;
|
|
85
|
+
return _super.call(this, {
|
|
86
|
+
token: token,
|
|
87
|
+
discoveryUrl: discoveryUrl,
|
|
88
|
+
serviceUrl: serviceUrl,
|
|
89
|
+
serviceKey: constants_1.SERVICE_KEY,
|
|
90
|
+
}) || this;
|
|
91
|
+
}
|
|
92
|
+
Files.prototype.getFolderSize = function (key) {
|
|
93
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
94
|
+
var size;
|
|
95
|
+
return __generator(this, function (_a) {
|
|
96
|
+
switch (_a.label) {
|
|
97
|
+
case 0: return [4, this.callApi({
|
|
98
|
+
method: 'get',
|
|
99
|
+
route: 'api/folder',
|
|
100
|
+
params: { key: key },
|
|
101
|
+
})];
|
|
102
|
+
case 1:
|
|
103
|
+
size = (_a.sent()).size;
|
|
104
|
+
return [2, size];
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
};
|
|
109
|
+
Files.prototype.getItemsList = function (isPublic, treePrefix) {
|
|
110
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
111
|
+
var nextToken, totalItems, queryParams, _a, items, nextTokenResponse;
|
|
112
|
+
return __generator(this, function (_b) {
|
|
113
|
+
switch (_b.label) {
|
|
114
|
+
case 0:
|
|
115
|
+
nextToken = null;
|
|
116
|
+
totalItems = [];
|
|
117
|
+
_b.label = 1;
|
|
118
|
+
case 1:
|
|
119
|
+
queryParams = {
|
|
120
|
+
isPublic: isPublic,
|
|
121
|
+
prefix: treePrefix,
|
|
122
|
+
};
|
|
123
|
+
if (nextToken)
|
|
124
|
+
queryParams.nextToken = nextToken;
|
|
125
|
+
return [4, this.callApi({
|
|
126
|
+
method: 'GET',
|
|
127
|
+
route: 'api/files',
|
|
128
|
+
params: queryParams,
|
|
129
|
+
})];
|
|
130
|
+
case 2:
|
|
131
|
+
_a = _b.sent(), items = _a.items, nextTokenResponse = _a.nextTokenResponse;
|
|
132
|
+
totalItems = __spreadArray(__spreadArray([], totalItems, true), items, true);
|
|
133
|
+
nextToken = nextTokenResponse;
|
|
134
|
+
_b.label = 3;
|
|
135
|
+
case 3:
|
|
136
|
+
if (nextToken) return [3, 1];
|
|
137
|
+
_b.label = 4;
|
|
138
|
+
case 4: return [2, totalItems];
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
});
|
|
142
|
+
};
|
|
143
|
+
Files.prototype.search = function (isPublic, term) {
|
|
144
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
145
|
+
var nextToken, totalItems, queryParams, _a, files, nextTokenResponse;
|
|
146
|
+
return __generator(this, function (_b) {
|
|
147
|
+
switch (_b.label) {
|
|
148
|
+
case 0:
|
|
149
|
+
nextToken = null;
|
|
150
|
+
totalItems = [];
|
|
151
|
+
_b.label = 1;
|
|
152
|
+
case 1:
|
|
153
|
+
queryParams = {
|
|
154
|
+
isPublic: isPublic,
|
|
155
|
+
term: term,
|
|
156
|
+
};
|
|
157
|
+
if (nextToken)
|
|
158
|
+
queryParams.nextToken = nextToken;
|
|
159
|
+
return [4, this.callApi({
|
|
160
|
+
method: 'GET',
|
|
161
|
+
route: 'api/files/search',
|
|
162
|
+
params: queryParams,
|
|
163
|
+
})];
|
|
164
|
+
case 2:
|
|
165
|
+
_a = _b.sent(), files = _a.files, nextTokenResponse = _a.nextTokenResponse;
|
|
166
|
+
totalItems = __spreadArray(__spreadArray([], totalItems, true), files, true);
|
|
167
|
+
nextToken = nextTokenResponse;
|
|
168
|
+
_b.label = 3;
|
|
169
|
+
case 3:
|
|
170
|
+
if (nextToken) return [3, 1];
|
|
171
|
+
_b.label = 4;
|
|
172
|
+
case 4: return [2, totalItems];
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
});
|
|
176
|
+
};
|
|
177
|
+
Files.prototype.createFolder = function (folderName) {
|
|
178
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
179
|
+
return __generator(this, function (_a) {
|
|
180
|
+
switch (_a.label) {
|
|
181
|
+
case 0: return [4, this.callApi({
|
|
182
|
+
method: 'post',
|
|
183
|
+
route: 'api/files',
|
|
184
|
+
data: { key: folderName },
|
|
185
|
+
})];
|
|
186
|
+
case 1:
|
|
187
|
+
_a.sent();
|
|
188
|
+
return [2];
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
});
|
|
192
|
+
};
|
|
193
|
+
Files.prototype.renameFile = function (key, newKey, isPublic) {
|
|
194
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
195
|
+
return __generator(this, function (_a) {
|
|
196
|
+
switch (_a.label) {
|
|
197
|
+
case 0: return [4, this.callApi({
|
|
198
|
+
method: 'put',
|
|
199
|
+
route: 'api/files',
|
|
200
|
+
params: {
|
|
201
|
+
key: key,
|
|
202
|
+
isPublic: isPublic,
|
|
203
|
+
},
|
|
204
|
+
data: { newKey: newKey },
|
|
205
|
+
})];
|
|
206
|
+
case 1:
|
|
207
|
+
_a.sent();
|
|
208
|
+
return [2];
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
});
|
|
212
|
+
};
|
|
213
|
+
Files.prototype.duplicateFile = function (key, newKey, isPublic) {
|
|
214
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
215
|
+
return __generator(this, function (_a) {
|
|
216
|
+
switch (_a.label) {
|
|
217
|
+
case 0: return [4, this.callApi({
|
|
218
|
+
method: 'put',
|
|
219
|
+
route: 'api/files/duplicate',
|
|
220
|
+
params: {
|
|
221
|
+
key: key,
|
|
222
|
+
isPublic: isPublic,
|
|
223
|
+
},
|
|
224
|
+
data: { newKey: newKey },
|
|
225
|
+
})];
|
|
226
|
+
case 1:
|
|
227
|
+
_a.sent();
|
|
228
|
+
return [2];
|
|
229
|
+
}
|
|
230
|
+
});
|
|
231
|
+
});
|
|
232
|
+
};
|
|
233
|
+
Files.prototype.changePrivacy = function (key, newPrivacy, isPublic) {
|
|
234
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
235
|
+
return __generator(this, function (_a) {
|
|
236
|
+
switch (_a.label) {
|
|
237
|
+
case 0: return [4, this.callApi({
|
|
238
|
+
method: 'patch',
|
|
239
|
+
route: 'api/files',
|
|
240
|
+
params: {
|
|
241
|
+
key: key,
|
|
242
|
+
isPublic: isPublic,
|
|
243
|
+
},
|
|
244
|
+
data: { newPrivacy: newPrivacy },
|
|
245
|
+
})];
|
|
246
|
+
case 1:
|
|
247
|
+
_a.sent();
|
|
248
|
+
return [2];
|
|
249
|
+
}
|
|
250
|
+
});
|
|
251
|
+
});
|
|
252
|
+
};
|
|
253
|
+
Files.prototype.deleteFile = function (key, isPublic) {
|
|
254
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
255
|
+
return __generator(this, function (_a) {
|
|
256
|
+
switch (_a.label) {
|
|
257
|
+
case 0: return [4, this.callApi({
|
|
258
|
+
method: 'delete',
|
|
259
|
+
route: 'api/files',
|
|
260
|
+
params: {
|
|
261
|
+
key: key,
|
|
262
|
+
isPublic: isPublic,
|
|
263
|
+
},
|
|
264
|
+
})];
|
|
265
|
+
case 1:
|
|
266
|
+
_a.sent();
|
|
267
|
+
return [2];
|
|
268
|
+
}
|
|
269
|
+
});
|
|
270
|
+
});
|
|
271
|
+
};
|
|
272
|
+
Files.prototype.deleteFolder = function (key) {
|
|
273
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
274
|
+
return __generator(this, function (_a) {
|
|
275
|
+
switch (_a.label) {
|
|
276
|
+
case 0: return [4, this.callApi({
|
|
277
|
+
method: 'delete',
|
|
278
|
+
route: 'api/folder',
|
|
279
|
+
data: { key: key },
|
|
280
|
+
})];
|
|
281
|
+
case 1:
|
|
282
|
+
_a.sent();
|
|
283
|
+
return [2];
|
|
284
|
+
}
|
|
285
|
+
});
|
|
286
|
+
});
|
|
287
|
+
};
|
|
288
|
+
Files.prototype.getDownloadUrl = function (key, isPublic) {
|
|
289
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
290
|
+
return __generator(this, function (_a) {
|
|
291
|
+
switch (_a.label) {
|
|
292
|
+
case 0: return [4, this.callApi({
|
|
293
|
+
method: 'get',
|
|
294
|
+
route: 'api/url',
|
|
295
|
+
params: {
|
|
296
|
+
key: key,
|
|
297
|
+
isPublic: isPublic,
|
|
298
|
+
},
|
|
299
|
+
})];
|
|
300
|
+
case 1: return [2, _a.sent()];
|
|
301
|
+
}
|
|
302
|
+
});
|
|
303
|
+
});
|
|
304
|
+
};
|
|
305
|
+
Files.prototype.getObjectInfo = function (key, isPublic) {
|
|
306
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
307
|
+
return __generator(this, function (_a) {
|
|
308
|
+
switch (_a.label) {
|
|
309
|
+
case 0: return [4, this.callApi({
|
|
310
|
+
method: 'get',
|
|
311
|
+
route: 'api/file',
|
|
312
|
+
params: {
|
|
313
|
+
key: key,
|
|
314
|
+
isPublic: isPublic,
|
|
315
|
+
},
|
|
316
|
+
})];
|
|
317
|
+
case 1: return [2, _a.sent()];
|
|
318
|
+
}
|
|
319
|
+
});
|
|
320
|
+
});
|
|
321
|
+
};
|
|
322
|
+
Files.prototype.checkFileExist = function (key, isPublic) {
|
|
323
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
324
|
+
return __generator(this, function (_a) {
|
|
325
|
+
switch (_a.label) {
|
|
326
|
+
case 0: return [4, this.callApi({
|
|
327
|
+
method: 'get',
|
|
328
|
+
route: 'api/files/check-file',
|
|
329
|
+
params: {
|
|
330
|
+
key: key,
|
|
331
|
+
isPublic: isPublic,
|
|
332
|
+
},
|
|
333
|
+
})];
|
|
334
|
+
case 1: return [2, _a.sent()];
|
|
335
|
+
}
|
|
336
|
+
});
|
|
337
|
+
});
|
|
338
|
+
};
|
|
339
|
+
Files.prototype.getUploadUrl = function (data, isPublic) {
|
|
340
|
+
return this.callApi({
|
|
341
|
+
method: 'post',
|
|
342
|
+
route: 'api/url',
|
|
343
|
+
params: {
|
|
344
|
+
isPublic: isPublic,
|
|
345
|
+
prefix: '',
|
|
346
|
+
},
|
|
347
|
+
data: __assign({}, data),
|
|
348
|
+
});
|
|
349
|
+
};
|
|
350
|
+
Files.prototype.uploadFile = function (file) {
|
|
351
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
352
|
+
var _a, type, name, contentType, _b, url, fields, formData;
|
|
353
|
+
return __generator(this, function (_c) {
|
|
354
|
+
switch (_c.label) {
|
|
355
|
+
case 0:
|
|
356
|
+
_a = file.fileModel, type = _a.type, name = _a.name;
|
|
357
|
+
contentType = type || 'binary/octet-stream';
|
|
358
|
+
return [4, this.getUploadUrl({
|
|
359
|
+
contentType: contentType,
|
|
360
|
+
key: file.prefix + name,
|
|
361
|
+
cacheControl: 'no-cache',
|
|
362
|
+
}, file.isPublic)];
|
|
363
|
+
case 1:
|
|
364
|
+
_b = _c.sent(), url = _b.url, fields = _b.fields;
|
|
365
|
+
formData = new FormData();
|
|
366
|
+
Object.entries(fields).forEach(function (value) {
|
|
367
|
+
formData.append(value[0], value[1]);
|
|
368
|
+
});
|
|
369
|
+
formData.append('cache-control', 'no-cache');
|
|
370
|
+
formData.append('content-type', contentType);
|
|
371
|
+
formData.append('File', file.fileModel, name);
|
|
372
|
+
return [2, axios_1.default.post(url, formData, {
|
|
373
|
+
onUploadProgress: function (event) { return file.progress(event, name); },
|
|
374
|
+
})];
|
|
375
|
+
}
|
|
376
|
+
});
|
|
377
|
+
});
|
|
378
|
+
};
|
|
379
|
+
return Files;
|
|
380
|
+
}(base_1.Base));
|
|
381
|
+
exports.Files = Files;
|
|
382
|
+
//# sourceMappingURL=Files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Files.js","sourceRoot":"","sources":["../../src/Files.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,WAAW,GAAG,WAAW,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.Files = void 0;
|
|
18
|
+
var Files_1 = require("./Files");
|
|
19
|
+
Object.defineProperty(exports, "Files", { enumerable: true, get: function () { return Files_1.Files; } });
|
|
20
|
+
__exportStar(require("./types"), exports);
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,iCAAgC;AAAvB,8FAAA,KAAK,OAAA;AACd,0CAAwB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import axios from 'axios';
|
|
11
|
+
import { Base } from '@or-sdk/base';
|
|
12
|
+
import { SERVICE_KEY } from './constants';
|
|
13
|
+
export class Files extends Base {
|
|
14
|
+
constructor(params) {
|
|
15
|
+
const { token, discoveryUrl, serviceUrl } = params;
|
|
16
|
+
super({
|
|
17
|
+
token,
|
|
18
|
+
discoveryUrl,
|
|
19
|
+
serviceUrl,
|
|
20
|
+
serviceKey: SERVICE_KEY,
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
getFolderSize(key) {
|
|
24
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
25
|
+
const { size } = yield this.callApi({
|
|
26
|
+
method: 'get',
|
|
27
|
+
route: 'api/folder',
|
|
28
|
+
params: { key },
|
|
29
|
+
});
|
|
30
|
+
return size;
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
getItemsList(isPublic, treePrefix) {
|
|
34
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
35
|
+
let nextToken = null;
|
|
36
|
+
let totalItems = [];
|
|
37
|
+
do {
|
|
38
|
+
const queryParams = {
|
|
39
|
+
isPublic,
|
|
40
|
+
prefix: treePrefix,
|
|
41
|
+
};
|
|
42
|
+
if (nextToken)
|
|
43
|
+
queryParams.nextToken = nextToken;
|
|
44
|
+
const { items, nextTokenResponse } = yield this.callApi({
|
|
45
|
+
method: 'GET',
|
|
46
|
+
route: 'api/files',
|
|
47
|
+
params: queryParams,
|
|
48
|
+
});
|
|
49
|
+
totalItems = [...totalItems, ...items];
|
|
50
|
+
nextToken = nextTokenResponse;
|
|
51
|
+
} while (nextToken);
|
|
52
|
+
return totalItems;
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
search(isPublic, term) {
|
|
56
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
57
|
+
let nextToken = null;
|
|
58
|
+
let totalItems = [];
|
|
59
|
+
do {
|
|
60
|
+
const queryParams = {
|
|
61
|
+
isPublic,
|
|
62
|
+
term,
|
|
63
|
+
};
|
|
64
|
+
if (nextToken)
|
|
65
|
+
queryParams.nextToken = nextToken;
|
|
66
|
+
const { files, nextTokenResponse } = yield this.callApi({
|
|
67
|
+
method: 'GET',
|
|
68
|
+
route: 'api/files/search',
|
|
69
|
+
params: queryParams,
|
|
70
|
+
});
|
|
71
|
+
totalItems = [...totalItems, ...files];
|
|
72
|
+
nextToken = nextTokenResponse;
|
|
73
|
+
} while (nextToken);
|
|
74
|
+
return totalItems;
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
createFolder(folderName) {
|
|
78
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
79
|
+
yield this.callApi({
|
|
80
|
+
method: 'post',
|
|
81
|
+
route: 'api/files',
|
|
82
|
+
data: { key: folderName },
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
renameFile(key, newKey, isPublic) {
|
|
87
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
88
|
+
yield this.callApi({
|
|
89
|
+
method: 'put',
|
|
90
|
+
route: 'api/files',
|
|
91
|
+
params: {
|
|
92
|
+
key,
|
|
93
|
+
isPublic,
|
|
94
|
+
},
|
|
95
|
+
data: { newKey },
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
duplicateFile(key, newKey, isPublic) {
|
|
100
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
101
|
+
yield this.callApi({
|
|
102
|
+
method: 'put',
|
|
103
|
+
route: 'api/files/duplicate',
|
|
104
|
+
params: {
|
|
105
|
+
key,
|
|
106
|
+
isPublic,
|
|
107
|
+
},
|
|
108
|
+
data: { newKey },
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
changePrivacy(key, newPrivacy, isPublic) {
|
|
113
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
114
|
+
yield this.callApi({
|
|
115
|
+
method: 'patch',
|
|
116
|
+
route: 'api/files',
|
|
117
|
+
params: {
|
|
118
|
+
key,
|
|
119
|
+
isPublic,
|
|
120
|
+
},
|
|
121
|
+
data: { newPrivacy },
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
deleteFile(key, isPublic) {
|
|
126
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
127
|
+
yield this.callApi({
|
|
128
|
+
method: 'delete',
|
|
129
|
+
route: 'api/files',
|
|
130
|
+
params: {
|
|
131
|
+
key,
|
|
132
|
+
isPublic,
|
|
133
|
+
},
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
deleteFolder(key) {
|
|
138
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
139
|
+
yield this.callApi({
|
|
140
|
+
method: 'delete',
|
|
141
|
+
route: 'api/folder',
|
|
142
|
+
data: { key },
|
|
143
|
+
});
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
getDownloadUrl(key, isPublic) {
|
|
147
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
148
|
+
return yield this.callApi({
|
|
149
|
+
method: 'get',
|
|
150
|
+
route: 'api/url',
|
|
151
|
+
params: {
|
|
152
|
+
key,
|
|
153
|
+
isPublic,
|
|
154
|
+
},
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
getObjectInfo(key, isPublic) {
|
|
159
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
160
|
+
return yield this.callApi({
|
|
161
|
+
method: 'get',
|
|
162
|
+
route: 'api/file',
|
|
163
|
+
params: {
|
|
164
|
+
key,
|
|
165
|
+
isPublic,
|
|
166
|
+
},
|
|
167
|
+
});
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
checkFileExist(key, isPublic) {
|
|
171
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
172
|
+
return yield this.callApi({
|
|
173
|
+
method: 'get',
|
|
174
|
+
route: 'api/files/check-file',
|
|
175
|
+
params: {
|
|
176
|
+
key,
|
|
177
|
+
isPublic,
|
|
178
|
+
},
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
getUploadUrl(data, isPublic) {
|
|
183
|
+
return this.callApi({
|
|
184
|
+
method: 'post',
|
|
185
|
+
route: 'api/url',
|
|
186
|
+
params: {
|
|
187
|
+
isPublic,
|
|
188
|
+
prefix: '',
|
|
189
|
+
},
|
|
190
|
+
data: Object.assign({}, data),
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
uploadFile(file) {
|
|
194
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
195
|
+
const { type, name } = file.fileModel;
|
|
196
|
+
const contentType = type || 'binary/octet-stream';
|
|
197
|
+
const { url, fields } = yield this.getUploadUrl({
|
|
198
|
+
contentType,
|
|
199
|
+
key: file.prefix + name,
|
|
200
|
+
cacheControl: 'no-cache',
|
|
201
|
+
}, file.isPublic);
|
|
202
|
+
const formData = new FormData();
|
|
203
|
+
Object.entries(fields).forEach(value => {
|
|
204
|
+
formData.append(value[0], value[1]);
|
|
205
|
+
});
|
|
206
|
+
formData.append('cache-control', 'no-cache');
|
|
207
|
+
formData.append('content-type', contentType);
|
|
208
|
+
formData.append('File', file.fileModel, name);
|
|
209
|
+
return axios.post(url, formData, {
|
|
210
|
+
onUploadProgress: event => file.progress(event, name),
|
|
211
|
+
});
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
//# sourceMappingURL=Files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Files.js","sourceRoot":"","sources":["../../src/Files.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Base } from '@or-sdk/base';
|
|
2
|
+
import { FilesConfig, FileItem, UploadFileProps, HeadData } from './types';
|
|
3
|
+
export declare class Files extends Base {
|
|
4
|
+
constructor(params: FilesConfig);
|
|
5
|
+
getFolderSize(key: string): Promise<number>;
|
|
6
|
+
getItemsList(isPublic: boolean, treePrefix: string): Promise<FileItem[]>;
|
|
7
|
+
search(isPublic: boolean, term: string): Promise<FileItem[]>;
|
|
8
|
+
createFolder(folderName: string): Promise<void>;
|
|
9
|
+
renameFile(key: string, newKey: string, isPublic: boolean): Promise<void>;
|
|
10
|
+
duplicateFile(key: string, newKey: string, isPublic: boolean): Promise<void>;
|
|
11
|
+
changePrivacy(key: string, newPrivacy: 'private' | 'public', isPublic: boolean): Promise<void>;
|
|
12
|
+
deleteFile(key: string, isPublic: boolean): Promise<void>;
|
|
13
|
+
deleteFolder(key: string): Promise<void>;
|
|
14
|
+
getDownloadUrl(key: string, isPublic: boolean): Promise<string>;
|
|
15
|
+
getObjectInfo(key: string, isPublic: boolean): Promise<HeadData>;
|
|
16
|
+
checkFileExist(key: string, isPublic: boolean): Promise<boolean>;
|
|
17
|
+
private getUploadUrl;
|
|
18
|
+
uploadFile(file: UploadFileProps): Promise<void>;
|
|
19
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const SERVICE_KEY = "files-api";
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { Token } from '@or-sdk/base';
|
|
2
|
+
export declare type FilesConfig = {
|
|
3
|
+
token: Token;
|
|
4
|
+
discoveryUrl?: string;
|
|
5
|
+
accountId?: string;
|
|
6
|
+
serviceUrl?: string;
|
|
7
|
+
};
|
|
8
|
+
export declare type GetItemsQuery = {
|
|
9
|
+
isPublic: boolean;
|
|
10
|
+
prefix: string;
|
|
11
|
+
nextToken?: string;
|
|
12
|
+
};
|
|
13
|
+
export declare type SearchQuery = {
|
|
14
|
+
isPublic: boolean;
|
|
15
|
+
term: string;
|
|
16
|
+
nextToken?: string;
|
|
17
|
+
};
|
|
18
|
+
export declare type FileItem = {
|
|
19
|
+
key: string;
|
|
20
|
+
size?: number;
|
|
21
|
+
lastModified?: string;
|
|
22
|
+
};
|
|
23
|
+
export declare type FilesPageState = {
|
|
24
|
+
filesInstance: any;
|
|
25
|
+
userToken: string;
|
|
26
|
+
discoveryUrl: string;
|
|
27
|
+
serviceUrl: string;
|
|
28
|
+
accountId: string;
|
|
29
|
+
renameFrom: string;
|
|
30
|
+
renameTo: string;
|
|
31
|
+
searchString: string;
|
|
32
|
+
items: FileItem[];
|
|
33
|
+
searchItems: FileItem[];
|
|
34
|
+
};
|
|
35
|
+
export declare type HeadData = {
|
|
36
|
+
contentLength: number;
|
|
37
|
+
contentType: string;
|
|
38
|
+
metaData: object;
|
|
39
|
+
};
|
|
40
|
+
export declare type GetItemsListResponse = {
|
|
41
|
+
items: FileItem[];
|
|
42
|
+
nextTokenResponse: string | null;
|
|
43
|
+
};
|
|
44
|
+
export declare type SearchItemsListResponse = {
|
|
45
|
+
files: FileItem[];
|
|
46
|
+
nextTokenResponse: string | null;
|
|
47
|
+
};
|
|
48
|
+
export declare type UploadUrlProps = {
|
|
49
|
+
key: string;
|
|
50
|
+
contentType: string;
|
|
51
|
+
maxFileSize?: number;
|
|
52
|
+
cacheControl: string;
|
|
53
|
+
};
|
|
54
|
+
export declare type UploadUrlResponse = {
|
|
55
|
+
url: string;
|
|
56
|
+
fields: {
|
|
57
|
+
key: string;
|
|
58
|
+
bucket: string;
|
|
59
|
+
Policy: string;
|
|
60
|
+
'X-Amz-Date': string;
|
|
61
|
+
'X-Amz-Signature': string;
|
|
62
|
+
'X-Amz-Algorithm': string;
|
|
63
|
+
'X-Amz-Credential': string;
|
|
64
|
+
'X-Amz-Security-Token': string;
|
|
65
|
+
}[];
|
|
66
|
+
};
|
|
67
|
+
export declare type UploadFileProps = {
|
|
68
|
+
fileModel: File;
|
|
69
|
+
prefix: string;
|
|
70
|
+
isPublic: boolean;
|
|
71
|
+
progress: (event: ProgressEvent, name: string) => void;
|
|
72
|
+
};
|
package/package.json
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.20.1-269.0",
|
|
3
|
+
"name": "@or-sdk/files",
|
|
4
|
+
"main": "dist/cjs/index.js",
|
|
5
|
+
"module": "dist/esm/index.js",
|
|
6
|
+
"types": "dist/types/index.d.ts",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"build": "npm run clean && concurrently \"npm run build:cjs\" \"npm run build:esm\" \"npm run build:types\"",
|
|
9
|
+
"build:watch": "concurrently -r --hide 1,2 \"npm run build:watch:cjs\" \"npm run build:watch:esm\" \"npm run build:watch:types\"",
|
|
10
|
+
"build:cjs": "tsc --project tsconfig.json",
|
|
11
|
+
"build:watch:cjs": "tsc --project tsconfig.json -w",
|
|
12
|
+
"build:esm": "tsc --project tsconfig.esm.json",
|
|
13
|
+
"build:watch:esm": "tsc --project tsconfig.esm.json -w",
|
|
14
|
+
"build:types": "tsc --project tsconfig.types.json",
|
|
15
|
+
"build:watch:types": "tsc --project tsconfig.types.json -w",
|
|
16
|
+
"clean": "rm -rf ./dist"
|
|
17
|
+
},
|
|
18
|
+
"devDependencies": {
|
|
19
|
+
"concurrently": "^6.4.0",
|
|
20
|
+
"typescript": "^4.4.4"
|
|
21
|
+
},
|
|
22
|
+
"publishConfig": {
|
|
23
|
+
"access": "public"
|
|
24
|
+
},
|
|
25
|
+
"dependencies": {
|
|
26
|
+
"@or-sdk/base": "^0.20.1-createfilespackage.19",
|
|
27
|
+
"axios": "^0.24.0"
|
|
28
|
+
}
|
|
29
|
+
}
|
package/src/Files.ts
ADDED
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
import axios from 'axios';
|
|
2
|
+
import { Base } from '@or-sdk/base';
|
|
3
|
+
import { SERVICE_KEY } from './constants';
|
|
4
|
+
import {
|
|
5
|
+
FilesConfig, GetItemsQuery, SearchItemsListResponse, SearchQuery, FileItem,
|
|
6
|
+
GetItemsListResponse, UploadUrlProps, UploadFileProps, UploadUrlResponse, HeadData,
|
|
7
|
+
} from './types';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* OneReach Files service client
|
|
11
|
+
* ## Installation:
|
|
12
|
+
* ```
|
|
13
|
+
* $ npm i @or-sdk/files
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export class Files extends Base {
|
|
17
|
+
/**
|
|
18
|
+
* ```typescript
|
|
19
|
+
* import { Files } from '@or-sdk/files'
|
|
20
|
+
* const files = new Files({token: 'my-account-token-string', discoveryUrl: 'http://example.tables/endpoint'});
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
constructor(params: FilesConfig) {
|
|
24
|
+
const { token, discoveryUrl, serviceUrl } = params;
|
|
25
|
+
|
|
26
|
+
super({
|
|
27
|
+
token,
|
|
28
|
+
discoveryUrl,
|
|
29
|
+
serviceUrl,
|
|
30
|
+
serviceKey: SERVICE_KEY,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Get folder size
|
|
36
|
+
* @param key the name of folder
|
|
37
|
+
* @return total folder size in bytes
|
|
38
|
+
*/
|
|
39
|
+
async getFolderSize(key: string): Promise<number> {
|
|
40
|
+
const { size } = await this.callApi({
|
|
41
|
+
method: 'get',
|
|
42
|
+
route: 'api/folder',
|
|
43
|
+
params: { key },
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
return size;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Get list of public/private FileItems from api
|
|
51
|
+
* @param isPublic does this file public or private
|
|
52
|
+
* @param treePrefix the folder path where GET FileItems, for Root use ''
|
|
53
|
+
* @return list of FileItems
|
|
54
|
+
*/
|
|
55
|
+
async getItemsList(isPublic: boolean, treePrefix: string): Promise<FileItem[]> {
|
|
56
|
+
let nextToken: null | string = null;
|
|
57
|
+
let totalItems: FileItem[] = [];
|
|
58
|
+
|
|
59
|
+
do {
|
|
60
|
+
const queryParams: GetItemsQuery = {
|
|
61
|
+
isPublic,
|
|
62
|
+
prefix: treePrefix,
|
|
63
|
+
};
|
|
64
|
+
if (nextToken) queryParams.nextToken = nextToken;
|
|
65
|
+
|
|
66
|
+
const { items, nextTokenResponse }: GetItemsListResponse = await this.callApi({
|
|
67
|
+
method: 'GET',
|
|
68
|
+
route: 'api/files',
|
|
69
|
+
params: queryParams,
|
|
70
|
+
});
|
|
71
|
+
totalItems = [...totalItems, ...items];
|
|
72
|
+
|
|
73
|
+
nextToken = nextTokenResponse;
|
|
74
|
+
} while (nextToken);
|
|
75
|
+
|
|
76
|
+
return totalItems;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
async search(isPublic: boolean, term: string): Promise<FileItem[]> {
|
|
80
|
+
let nextToken = null;
|
|
81
|
+
let totalItems: FileItem[] = [];
|
|
82
|
+
|
|
83
|
+
do {
|
|
84
|
+
const queryParams: SearchQuery = {
|
|
85
|
+
isPublic,
|
|
86
|
+
term,
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
if (nextToken) queryParams.nextToken = nextToken;
|
|
90
|
+
|
|
91
|
+
const { files, nextTokenResponse }: SearchItemsListResponse = await this.callApi({
|
|
92
|
+
method: 'GET',
|
|
93
|
+
route: 'api/files/search',
|
|
94
|
+
params: queryParams,
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
totalItems = [...totalItems, ...files];
|
|
98
|
+
nextToken = nextTokenResponse;
|
|
99
|
+
|
|
100
|
+
} while (nextToken);
|
|
101
|
+
|
|
102
|
+
return totalItems;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Create new folders
|
|
107
|
+
* @param folderName should have folder path + folder name, example: /main/New folder
|
|
108
|
+
*/
|
|
109
|
+
async createFolder(folderName: string): Promise<void> {
|
|
110
|
+
await this.callApi({
|
|
111
|
+
method: 'post',
|
|
112
|
+
route: 'api/files',
|
|
113
|
+
data: { key: folderName },
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Rename exist file
|
|
119
|
+
* @param key old file name
|
|
120
|
+
* @param newKey new file name
|
|
121
|
+
* @param isPublic does this file public or private
|
|
122
|
+
*/
|
|
123
|
+
async renameFile(key: string, newKey: string, isPublic: boolean): Promise<void> {
|
|
124
|
+
await this.callApi({
|
|
125
|
+
method: 'put',
|
|
126
|
+
route: 'api/files',
|
|
127
|
+
params: {
|
|
128
|
+
key,
|
|
129
|
+
isPublic,
|
|
130
|
+
},
|
|
131
|
+
data: { newKey },
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Duplicate file
|
|
137
|
+
* @param key target file name
|
|
138
|
+
* @param newKey new file name
|
|
139
|
+
* @param isPublic does this file public or private
|
|
140
|
+
*/
|
|
141
|
+
async duplicateFile(key: string, newKey: string, isPublic: boolean): Promise<void> {
|
|
142
|
+
await this.callApi({
|
|
143
|
+
method: 'put',
|
|
144
|
+
route: 'api/files/duplicate',
|
|
145
|
+
params: {
|
|
146
|
+
key,
|
|
147
|
+
isPublic,
|
|
148
|
+
},
|
|
149
|
+
data: { newKey },
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* Change file privacy
|
|
155
|
+
* @param key file name
|
|
156
|
+
* @param newPrivacy new file privacy
|
|
157
|
+
* @param isPublic does this file public or private
|
|
158
|
+
*/
|
|
159
|
+
async changePrivacy(key: string, newPrivacy: 'private' | 'public', isPublic: boolean): Promise<void> {
|
|
160
|
+
await this.callApi({
|
|
161
|
+
method: 'patch',
|
|
162
|
+
route: 'api/files',
|
|
163
|
+
params: {
|
|
164
|
+
key,
|
|
165
|
+
isPublic,
|
|
166
|
+
},
|
|
167
|
+
data: { newPrivacy },
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Delete file
|
|
173
|
+
* @param key file name
|
|
174
|
+
* @param isPublic does this file public or private
|
|
175
|
+
*/
|
|
176
|
+
async deleteFile(key: string, isPublic: boolean): Promise<void> {
|
|
177
|
+
// TODO: add error handler and status response true
|
|
178
|
+
await this.callApi({
|
|
179
|
+
method: 'delete',
|
|
180
|
+
route: 'api/files',
|
|
181
|
+
params: {
|
|
182
|
+
key,
|
|
183
|
+
isPublic,
|
|
184
|
+
},
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* Delete folder
|
|
190
|
+
* @param key folder name
|
|
191
|
+
*/
|
|
192
|
+
async deleteFolder(key: string): Promise<void> {
|
|
193
|
+
// TODO: add error handler and status response true
|
|
194
|
+
await this.callApi({
|
|
195
|
+
method: 'delete',
|
|
196
|
+
route: 'api/folder',
|
|
197
|
+
data: { key },
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* Get a link to download file, example: for preview
|
|
203
|
+
* @param key folder name
|
|
204
|
+
* @param isPublic does this file public or private
|
|
205
|
+
* @return file url
|
|
206
|
+
*/
|
|
207
|
+
async getDownloadUrl(key: string, isPublic: boolean): Promise<string> {
|
|
208
|
+
return await this.callApi({
|
|
209
|
+
method: 'get',
|
|
210
|
+
route: 'api/url',
|
|
211
|
+
params: {
|
|
212
|
+
key,
|
|
213
|
+
isPublic,
|
|
214
|
+
},
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* Get object info
|
|
220
|
+
* @param key folder name
|
|
221
|
+
* @param isPublic does this file public or private
|
|
222
|
+
*/
|
|
223
|
+
async getObjectInfo(key: string, isPublic: boolean): Promise<HeadData> {
|
|
224
|
+
return await this.callApi({
|
|
225
|
+
method: 'get',
|
|
226
|
+
route: 'api/file',
|
|
227
|
+
params: {
|
|
228
|
+
key,
|
|
229
|
+
isPublic,
|
|
230
|
+
},
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
/**
|
|
235
|
+
* Check is file with such name already exist
|
|
236
|
+
* @param key file name
|
|
237
|
+
* @param isPublic does file public or private
|
|
238
|
+
* @return true if file exist
|
|
239
|
+
*/
|
|
240
|
+
async checkFileExist(key: string, isPublic: boolean): Promise<boolean> {
|
|
241
|
+
return await this.callApi({
|
|
242
|
+
method: 'get',
|
|
243
|
+
route: 'api/files/check-file',
|
|
244
|
+
params: {
|
|
245
|
+
key,
|
|
246
|
+
isPublic,
|
|
247
|
+
},
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
/**
|
|
252
|
+
* Get a link for uploading specific file, JUST FOR INNER USE
|
|
253
|
+
* @param data has UploadUrlProps values inside
|
|
254
|
+
* @param isPublic does this file public or private
|
|
255
|
+
* @return uploading Url with different header Fields
|
|
256
|
+
*/
|
|
257
|
+
private getUploadUrl(data: UploadUrlProps, isPublic: boolean): Promise<UploadUrlResponse> {
|
|
258
|
+
return this.callApi({
|
|
259
|
+
method: 'post',
|
|
260
|
+
route: 'api/url',
|
|
261
|
+
params: {
|
|
262
|
+
isPublic,
|
|
263
|
+
prefix: '',
|
|
264
|
+
},
|
|
265
|
+
data: { ...data },
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
/**
|
|
270
|
+
* Upload file to S3 bucket
|
|
271
|
+
* @param file file itself for uploading with prefix (path) and isPublic boolean
|
|
272
|
+
*/
|
|
273
|
+
async uploadFile(file: UploadFileProps): Promise<void> {
|
|
274
|
+
const { type, name } = file.fileModel;
|
|
275
|
+
const contentType = type || 'binary/octet-stream';
|
|
276
|
+
|
|
277
|
+
const { url, fields } = await this.getUploadUrl({
|
|
278
|
+
contentType,
|
|
279
|
+
key: file.prefix + name,
|
|
280
|
+
cacheControl: 'no-cache',
|
|
281
|
+
}, file.isPublic);
|
|
282
|
+
|
|
283
|
+
const formData = new FormData();
|
|
284
|
+
|
|
285
|
+
Object.entries(fields).forEach(value => {
|
|
286
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
287
|
+
// @ts-ignore
|
|
288
|
+
formData.append(value[0], value[1]);
|
|
289
|
+
});
|
|
290
|
+
|
|
291
|
+
formData.append('cache-control', 'no-cache');
|
|
292
|
+
formData.append('content-type', contentType);
|
|
293
|
+
formData.append('File', file.fileModel, name);
|
|
294
|
+
|
|
295
|
+
return axios.post(url, formData, {
|
|
296
|
+
onUploadProgress: event => file.progress(event, name),
|
|
297
|
+
});
|
|
298
|
+
}
|
|
299
|
+
}
|
package/src/constants.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const SERVICE_KEY = 'files-api';
|
package/src/index.ts
ADDED
package/src/types.ts
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { Token } from '@or-sdk/base';
|
|
2
|
+
|
|
3
|
+
export type FilesConfig = {
|
|
4
|
+
/**
|
|
5
|
+
* token
|
|
6
|
+
*/
|
|
7
|
+
token: Token;
|
|
8
|
+
/**
|
|
9
|
+
* Url of OneReach service discovery api
|
|
10
|
+
*/
|
|
11
|
+
discoveryUrl?: string;
|
|
12
|
+
/**
|
|
13
|
+
* Account ID for cross-account requests (super admin only)
|
|
14
|
+
*/
|
|
15
|
+
accountId?: string;
|
|
16
|
+
/**
|
|
17
|
+
* Direct service url, can be used to avoid discovery api call
|
|
18
|
+
*/
|
|
19
|
+
serviceUrl?: string;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export type GetItemsQuery = {
|
|
23
|
+
isPublic: boolean;
|
|
24
|
+
prefix: string;
|
|
25
|
+
nextToken?: string;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export type SearchQuery = {
|
|
29
|
+
isPublic: boolean;
|
|
30
|
+
term: string;
|
|
31
|
+
nextToken?: string;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export type FileItem = {
|
|
35
|
+
key: string;
|
|
36
|
+
size?: number;
|
|
37
|
+
lastModified?: string;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
export type FilesPageState = {
|
|
41
|
+
filesInstance: any;
|
|
42
|
+
userToken: string;
|
|
43
|
+
discoveryUrl: string;
|
|
44
|
+
serviceUrl: string;
|
|
45
|
+
accountId: string;
|
|
46
|
+
renameFrom: string;
|
|
47
|
+
renameTo: string;
|
|
48
|
+
searchString: string;
|
|
49
|
+
items: FileItem[];
|
|
50
|
+
searchItems: FileItem[];
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
export type HeadData = {
|
|
54
|
+
contentLength: number;
|
|
55
|
+
contentType: string;
|
|
56
|
+
metaData: object;
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
export type GetItemsListResponse = {
|
|
60
|
+
items: FileItem[];
|
|
61
|
+
nextTokenResponse: string | null;
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
export type SearchItemsListResponse = {
|
|
65
|
+
files: FileItem[];
|
|
66
|
+
nextTokenResponse: string | null;
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
export type UploadUrlProps = {
|
|
70
|
+
key: string;
|
|
71
|
+
contentType: string;
|
|
72
|
+
maxFileSize?: number;
|
|
73
|
+
cacheControl: string;
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
export type UploadUrlResponse = {
|
|
77
|
+
url: string;
|
|
78
|
+
fields: {
|
|
79
|
+
key: string;
|
|
80
|
+
bucket: string;
|
|
81
|
+
Policy: string;
|
|
82
|
+
'X-Amz-Date': string;
|
|
83
|
+
'X-Amz-Signature': string;
|
|
84
|
+
'X-Amz-Algorithm': string;
|
|
85
|
+
'X-Amz-Credential': string;
|
|
86
|
+
'X-Amz-Security-Token': string;
|
|
87
|
+
}[];
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
export type UploadFileProps = {
|
|
91
|
+
fileModel: File;
|
|
92
|
+
prefix: string;
|
|
93
|
+
isPublic: boolean;
|
|
94
|
+
progress: (event: ProgressEvent, name: string) => void;
|
|
95
|
+
};
|
|
96
|
+
|
package/tsconfig.json
ADDED