@ibm-aspera/sdk 0.2.9 → 0.2.29

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.
Files changed (110) hide show
  1. package/.editorconfig +13 -0
  2. package/.github/CODEOWNERS +1 -0
  3. package/.github/CODE_OF_CONDUCT.md +128 -0
  4. package/.github/CONTRIBUTING.md +147 -0
  5. package/.github/dependabot.yml +10 -0
  6. package/.github/workflows/ci.yml +39 -0
  7. package/.github/workflows/documentation.yml +44 -0
  8. package/.github/workflows/publish.yml +23 -0
  9. package/.github/workflows/version.yml +32 -0
  10. package/CHANGELOG.md +204 -0
  11. package/docs/DEVELOPMENT.md +38 -0
  12. package/eslint.config.js +104 -0
  13. package/example/README.md +7 -0
  14. package/example/index.html +14 -0
  15. package/example/package-lock.json +2989 -0
  16. package/example/package.json +30 -0
  17. package/example/public/404.html +5 -0
  18. package/example/public/sdk-code.js +326 -0
  19. package/example/src/App/App.scss +40 -0
  20. package/example/src/App/index.tsx +196 -0
  21. package/example/src/Views/AllTogether.tsx +26 -0
  22. package/example/src/Views/DragDrop.tsx +23 -0
  23. package/example/src/Views/Home.tsx +10 -0
  24. package/example/src/Views/Initialize.tsx +31 -0
  25. package/example/src/Views/Installer.tsx +154 -0
  26. package/example/src/Views/MonitorTransfers.tsx +88 -0
  27. package/example/src/Views/Other.tsx +24 -0
  28. package/example/src/Views/SelectItems.tsx +46 -0
  29. package/example/src/Views/StartTransfer.tsx +37 -0
  30. package/example/src/Views/Test.tsx +20 -0
  31. package/example/src/Views/Views.scss +111 -0
  32. package/example/src/helpers/index.ts +19 -0
  33. package/example/src/index.scss +47 -0
  34. package/example/src/main.tsx +17 -0
  35. package/example/src/vite-env.d.ts +2 -0
  36. package/example/tsconfig.json +30 -0
  37. package/example/vite.config.ts +23 -0
  38. package/jest.config.js +19 -0
  39. package/jest.setup.js +0 -0
  40. package/package.json +15 -21
  41. package/renovate.json +12 -0
  42. package/scripts/version.sh +24 -0
  43. package/src/app/core.ts +765 -0
  44. package/src/app/installer.ts +53 -0
  45. package/src/connect/core.ts +83 -0
  46. package/src/constants/constants.ts +19 -0
  47. package/src/constants/messages.ts +35 -0
  48. package/src/helpers/client/client.ts +11 -0
  49. package/src/helpers/client/http-client.ts +92 -0
  50. package/src/helpers/client/safari-client.ts +334 -0
  51. package/src/helpers/helpers.ts +253 -0
  52. package/src/helpers/http.ts +39 -0
  53. package/src/helpers/ws.ts +191 -0
  54. package/src/http-gateway/core.ts +273 -0
  55. package/src/http-gateway/download.ts +217 -0
  56. package/src/http-gateway/index.ts +19 -0
  57. package/src/http-gateway/models.ts +20 -0
  58. package/src/http-gateway/upload.ts +148 -0
  59. package/src/index.ts +72 -0
  60. package/src/models/aspera-sdk.model.ts +446 -0
  61. package/src/models/models.ts +740 -0
  62. package/tests/client.spec.ts +52 -0
  63. package/tests/core.spec.ts +13 -0
  64. package/tests/helpers.spec.ts +127 -0
  65. package/tests/http.spec.ts +14 -0
  66. package/tests/installer.spec.ts +135 -0
  67. package/tests/mocks.ts +11 -0
  68. package/tsconfig.json +14 -0
  69. package/tsconfig.module.json +16 -0
  70. package/typedoc.js +7 -0
  71. package/webpack.config.js +35 -0
  72. package/dist/commonjs/app/core.d.ts +0 -205
  73. package/dist/commonjs/app/core.js +0 -615
  74. package/dist/commonjs/app/installer.d.ts +0 -9
  75. package/dist/commonjs/app/installer.js +0 -50
  76. package/dist/commonjs/constants/constants.d.ts +0 -8
  77. package/dist/commonjs/constants/constants.js +0 -11
  78. package/dist/commonjs/constants/messages.d.ts +0 -35
  79. package/dist/commonjs/constants/messages.js +0 -38
  80. package/dist/commonjs/helpers/client/client.d.ts +0 -5
  81. package/dist/commonjs/helpers/client/client.js +0 -7
  82. package/dist/commonjs/helpers/client/http-client.d.ts +0 -42
  83. package/dist/commonjs/helpers/client/http-client.js +0 -84
  84. package/dist/commonjs/helpers/client/safari-client.d.ts +0 -101
  85. package/dist/commonjs/helpers/client/safari-client.js +0 -264
  86. package/dist/commonjs/helpers/helpers.d.ts +0 -109
  87. package/dist/commonjs/helpers/helpers.js +0 -249
  88. package/dist/commonjs/helpers/http.d.ts +0 -16
  89. package/dist/commonjs/helpers/http.js +0 -42
  90. package/dist/commonjs/helpers/ws.d.ts +0 -62
  91. package/dist/commonjs/helpers/ws.js +0 -176
  92. package/dist/commonjs/http-gateway/core.d.ts +0 -76
  93. package/dist/commonjs/http-gateway/core.js +0 -254
  94. package/dist/commonjs/http-gateway/download.d.ts +0 -14
  95. package/dist/commonjs/http-gateway/download.js +0 -186
  96. package/dist/commonjs/http-gateway/index.d.ts +0 -11
  97. package/dist/commonjs/http-gateway/index.js +0 -11
  98. package/dist/commonjs/http-gateway/models.d.ts +0 -16
  99. package/dist/commonjs/http-gateway/models.js +0 -2
  100. package/dist/commonjs/http-gateway/upload.d.ts +0 -14
  101. package/dist/commonjs/http-gateway/upload.js +0 -124
  102. package/dist/commonjs/index.d.ts +0 -8
  103. package/dist/commonjs/index.js +0 -104
  104. package/dist/commonjs/models/aspera-sdk.model.d.ts +0 -244
  105. package/dist/commonjs/models/aspera-sdk.model.js +0 -324
  106. package/dist/commonjs/models/models.d.ts +0 -692
  107. package/dist/commonjs/models/models.js +0 -2
  108. package/dist/js/aspera-sdk.js +0 -3
  109. package/dist/js/aspera-sdk.js.LICENSE.txt +0 -15
  110. package/dist/js/aspera-sdk.js.map +0 -1
@@ -1,76 +0,0 @@
1
- import { FileDialogOptions, DataTransferResponse, TransferSpec, AsperaSdkTransfer } from '../models/models';
2
- /**
3
- * HTTP Gateway Core Logic
4
- * - File/Folder picking
5
- * - Starting and testing
6
- *
7
- * @remarks
8
- * Most logic is called directly by Desktop SDK functions
9
- * You may not need to import anything from this file.
10
- */
11
- /**
12
- * Remove a transfer from HTTP Gateway systems
13
- * @param id - ID of the transfer
14
- *
15
- * @returns Promise indicating success
16
- */
17
- export declare const httpRemoveTransfer: (id: string) => Promise<any>;
18
- /**
19
- * Get the list of http gateway transfers
20
- *
21
- * @returns list of HTTP Gateway
22
- */
23
- export declare const httpGetAllTransfers: () => AsperaSdkTransfer[];
24
- /**
25
- * Get a HTTP Gateway transfer by ID
26
- *
27
- * @returns a transfer or null
28
- */
29
- export declare const httpGetTransfer: (id: string) => AsperaSdkTransfer | null;
30
- /**
31
- * Create HTML input element for file picking
32
- */
33
- export declare const createHtmlInputElement: () => HTMLInputElement;
34
- /**
35
- * Handle drop events and store files for HTTP Gateway
36
- * This works on top of desktop.
37
- */
38
- export declare const handleHttpGatewayDrop: (items: DataTransferItemList, callback: (data: {
39
- event: DragEvent;
40
- files: DataTransferResponse;
41
- }) => void, event: DragEvent) => void;
42
- /**
43
- * Open native browser file or folder picker for files
44
- *
45
- * @param options - File picker options
46
- * @param folder - Indicate if choosing folders
47
- *
48
- * @returns Promise that resolves with info about the files picked
49
- */
50
- export declare const httpGatewaySelectFileFolderDialog: (options?: FileDialogOptions, folder?: boolean) => Promise<DataTransferResponse>;
51
- /**
52
- * Get a generic transfer object for HTTP Gateway transfers.
53
- *
54
- * @param transferSpec - TransferSpec being provided for the HTTP Gateway transfer
55
- *
56
- * @returns a transfer object to track status and send to consumers
57
- */
58
- export declare const getSdkTransfer: (transferSpec: TransferSpec) => AsperaSdkTransfer;
59
- /**
60
- * Send a transfer update through the SDK
61
- *
62
- * @param transfer - Transsfer object to send to consumers
63
- */
64
- export declare const sendTransferUpdate: (transfer: AsperaSdkTransfer) => void;
65
- /**
66
- * Try to parse and get a useful string from API calls for HTTP Gateway
67
- *
68
- * @param error - Error from API call for Gateway
69
- *
70
- * @returns a string to use for errors
71
- */
72
- export declare const getMessageFromError: (error: any) => {
73
- message: string;
74
- code: number;
75
- };
76
- export declare const base64Encoding: (jsonString: string) => string;
@@ -1,254 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.base64Encoding = exports.getMessageFromError = exports.sendTransferUpdate = exports.getSdkTransfer = exports.httpGatewaySelectFileFolderDialog = exports.handleHttpGatewayDrop = exports.createHtmlInputElement = exports.httpGetTransfer = exports.httpGetAllTransfers = exports.httpRemoveTransfer = void 0;
4
- var messages_1 = require("../constants/messages");
5
- var helpers_1 = require("../helpers/helpers");
6
- var index_1 = require("../index");
7
- var http_gateway_sdk_js_1 = require("@ibm-aspera/http-gateway-sdk-js");
8
- /**
9
- * HTTP Gateway Core Logic
10
- * - File/Folder picking
11
- * - Starting and testing
12
- *
13
- * @remarks
14
- * Most logic is called directly by Desktop SDK functions
15
- * You may not need to import anything from this file.
16
- */
17
- /**
18
- * Remove a transfer from HTTP Gateway systems
19
- * @param id - ID of the transfer
20
- *
21
- * @returns Promise indicating success
22
- */
23
- var httpRemoveTransfer = function (id) {
24
- if (index_1.asperaSdk.useOldHttpGateway) {
25
- (0, http_gateway_sdk_js_1.removeTransfer)(id);
26
- return Promise.resolve({ removed: true });
27
- }
28
- var transfer = index_1.asperaSdk.httpGatewayTransferStore.get(id);
29
- if (transfer) {
30
- index_1.asperaSdk.httpGatewayTransferStore.delete(id);
31
- return Promise.resolve({ removed: true });
32
- }
33
- else {
34
- return Promise.reject((0, helpers_1.generateErrorBody)(messages_1.messages.removeTransferFailed, { reason: 'Not found' }));
35
- }
36
- };
37
- exports.httpRemoveTransfer = httpRemoveTransfer;
38
- /**
39
- * Get the list of http gateway transfers
40
- *
41
- * @returns list of HTTP Gateway
42
- */
43
- var httpGetAllTransfers = function () {
44
- if (index_1.asperaSdk.useOldHttpGateway) {
45
- return (0, http_gateway_sdk_js_1.getAllTransfers)().transfers;
46
- }
47
- return Array.from(index_1.asperaSdk.httpGatewayTransferStore.values());
48
- };
49
- exports.httpGetAllTransfers = httpGetAllTransfers;
50
- /**
51
- * Get a HTTP Gateway transfer by ID
52
- *
53
- * @returns a transfer or null
54
- */
55
- var httpGetTransfer = function (id) {
56
- if (index_1.asperaSdk.useOldHttpGateway) {
57
- return (0, http_gateway_sdk_js_1.getTransferById)(id);
58
- }
59
- return index_1.asperaSdk.httpGatewayTransferStore.get(id);
60
- };
61
- exports.httpGetTransfer = httpGetTransfer;
62
- /**
63
- * Create HTML input element for file picking
64
- */
65
- var createHtmlInputElement = function () {
66
- var element = window.document.createElement('input');
67
- element.type = 'file';
68
- element.style = 'display: none;';
69
- window.document.body.appendChild(element);
70
- return element;
71
- };
72
- exports.createHtmlInputElement = createHtmlInputElement;
73
- /**
74
- * Handle drop events and store files for HTTP Gateway
75
- * This works on top of desktop.
76
- */
77
- var handleHttpGatewayDrop = function (items, callback, event) {
78
- var files = [];
79
- var callbackCount = 0;
80
- var callbackFinishCount = 0;
81
- var finalCallback = function () {
82
- if (callbackFinishCount >= callbackCount) {
83
- var finalFiles = files.map(function (file) {
84
- index_1.asperaSdk.httpGatewaySelectedFiles.set(file.name, file);
85
- return {
86
- lastModified: file.lastModified,
87
- name: file.name,
88
- size: file.size,
89
- type: file.type
90
- };
91
- });
92
- callback({ event: event, files: { dataTransfer: { files: finalFiles } } });
93
- }
94
- };
95
- var traverse = function (item) {
96
- if (item.isFile) {
97
- item.file(function (file) {
98
- files.push(file);
99
- callbackFinishCount++;
100
- finalCallback();
101
- });
102
- }
103
- else if (item.isDirectory) {
104
- var dirReader = item.createReader();
105
- dirReader.readEntries(function (entries) {
106
- for (var k = 0; k < entries.length; k++) {
107
- callbackCount++;
108
- traverse(entries[k]);
109
- }
110
- });
111
- callbackFinishCount++;
112
- }
113
- else {
114
- callbackFinishCount++;
115
- finalCallback();
116
- }
117
- };
118
- for (var i = 0; i < items.length; i++) {
119
- var item = items[i].webkitGetAsEntry();
120
- if (item) {
121
- callbackCount++;
122
- traverse(item);
123
- }
124
- }
125
- };
126
- exports.handleHttpGatewayDrop = handleHttpGatewayDrop;
127
- /**
128
- * Open native browser file or folder picker for files
129
- *
130
- * @param options - File picker options
131
- * @param folder - Indicate if choosing folders
132
- *
133
- * @returns Promise that resolves with info about the files picked
134
- */
135
- var httpGatewaySelectFileFolderDialog = function (options, folder) {
136
- if (index_1.asperaSdk.useOldHttpGateway) {
137
- return (folder ? (0, http_gateway_sdk_js_1.getFoldersForUploadPromise)((options === null || options === void 0 ? void 0 : options.http_gateway_v2_transfer_id) || '') : (0, http_gateway_sdk_js_1.getFilesForUploadPromise)((options === null || options === void 0 ? void 0 : options.http_gateway_v2_transfer_id) || ''));
138
- }
139
- var _a = (0, helpers_1.generatePromiseObjects)(), promise = _a.promise, rejecter = _a.rejecter, resolver = _a.resolver;
140
- var element = (0, exports.createHtmlInputElement)();
141
- element.multiple = !!(options === null || options === void 0 ? void 0 : options.multiple);
142
- if (folder) {
143
- element.webkitdirectory = true;
144
- }
145
- element.oncancel = function () {
146
- rejecter({ debugData: { code: -32002, message: messages_1.messages.filePickerCancel } });
147
- };
148
- element.onchange = function () {
149
- var returnFiles = [];
150
- for (var i = 0; i < element.files.length; i++) {
151
- var file = element.files[i];
152
- returnFiles.push(file);
153
- index_1.asperaSdk.httpGatewaySelectedFiles.set(file.name, file);
154
- }
155
- resolver({
156
- dataTransfer: {
157
- files: returnFiles.map(function (file) {
158
- return {
159
- size: file.size,
160
- lastModified: file.lastModified,
161
- name: file.webkitRelativePath || file.name,
162
- type: file.type,
163
- };
164
- })
165
- }
166
- });
167
- };
168
- element.click();
169
- return promise;
170
- };
171
- exports.httpGatewaySelectFileFolderDialog = httpGatewaySelectFileFolderDialog;
172
- /**
173
- * Get a generic transfer object for HTTP Gateway transfers.
174
- *
175
- * @param transferSpec - TransferSpec being provided for the HTTP Gateway transfer
176
- *
177
- * @returns a transfer object to track status and send to consumers
178
- */
179
- var getSdkTransfer = function (transferSpec) {
180
- return {
181
- uuid: (0, helpers_1.randomUUID)(),
182
- transfer_spec: transferSpec,
183
- current_file: '',
184
- add_time: new Date().toISOString(),
185
- file_counts: {
186
- attempted: 0,
187
- completed: 0,
188
- failed: 0,
189
- skipped: 0,
190
- },
191
- end_time: '',
192
- explorer_path: '',
193
- status: 'queued',
194
- bytes_written: 0,
195
- bytes_expected: 0,
196
- calculated_rate_kbps: 0,
197
- elapsed_usec: 0,
198
- percentage: 0,
199
- title: '',
200
- remaining_usec: 0,
201
- httpGatewayTransfer: true,
202
- httpDownloadExternalHandle: false,
203
- };
204
- };
205
- exports.getSdkTransfer = getSdkTransfer;
206
- /**
207
- * Send a transfer update through the SDK
208
- *
209
- * @param transfer - Transsfer object to send to consumers
210
- */
211
- var sendTransferUpdate = function (transfer) {
212
- index_1.asperaSdk.httpGatewayTransferStore.set(transfer.uuid, transfer);
213
- index_1.asperaSdk.activityTracking.handleTransferActivity({
214
- type: 'transferUpdated',
215
- data: { transfers: [transfer] },
216
- });
217
- };
218
- exports.sendTransferUpdate = sendTransferUpdate;
219
- /**
220
- * Try to parse and get a useful string from API calls for HTTP Gateway
221
- *
222
- * @param error - Error from API call for Gateway
223
- *
224
- * @returns a string to use for errors
225
- */
226
- var getMessageFromError = function (error) {
227
- var data = (0, helpers_1.safeJsonParse)(error);
228
- var message = messages_1.messages.httpNetworkFail;
229
- var code = 500;
230
- if (data && typeof data === 'object') {
231
- message = data.message || data.description || messages_1.messages.httpNetworkFail;
232
- code = data.code || 500;
233
- }
234
- else if (error && typeof error === 'object') {
235
- message = error.message || error.description || messages_1.messages.httpNetworkFail;
236
- code = error.code || 500;
237
- }
238
- else if (typeof error === 'string') {
239
- message = error;
240
- }
241
- return {
242
- message: message,
243
- code: code,
244
- };
245
- };
246
- exports.getMessageFromError = getMessageFromError;
247
- var base64Encoding = function (jsonString) {
248
- var bytes = new TextEncoder().encode(jsonString);
249
- var binString = Array.from(bytes, function (byte) {
250
- return String.fromCodePoint(byte);
251
- }).join('');
252
- return btoa(binString);
253
- };
254
- exports.base64Encoding = base64Encoding;
@@ -1,14 +0,0 @@
1
- import { AsperaSdkSpec, AsperaSdkTransfer, TransferSpec } from '../models/models';
2
- /**
3
- * HTTP Gateway Download Logic
4
- *
5
- * @param transferSpec - TransferSpec for the download
6
- * @param asperaSdkSpec IBM Aspera settings when starting a transfer.
7
- *
8
- * @returns Promise that resolves on success invoke or rejects if unable to start
9
- *
10
- * @remarks
11
- * Most logic is called directly by Desktop SDK functions
12
- * You may not need to import anything from this file.
13
- */
14
- export declare const httpDownload: (transferSpec: TransferSpec, asperaSdkSpec?: AsperaSdkSpec) => Promise<AsperaSdkTransfer>;
@@ -1,186 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.httpDownload = void 0;
4
- var index_1 = require("../index");
5
- var helpers_1 = require("../helpers/helpers");
6
- var messages_1 = require("../constants/messages");
7
- var core_1 = require("./core");
8
- var http_gateway_sdk_js_1 = require("@ibm-aspera/http-gateway-sdk-js");
9
- /**
10
- * HTTP Gateway Download Logic for presigned flow
11
- * Presigned flow is when used files are too large or unknown file size
12
- *
13
- * @param transferSpec - TransferSpec for the download
14
- * @param asperaSdkSpec IBM Aspera settings when starting a transfer.
15
- *
16
- * @returns Promise that resolves on success invoke or rejects if unable to start
17
- *
18
- * @remarks
19
- * This function is used internally and not exported.
20
- */
21
- var httpDownloadPresigned = function (transferSpec, asperaSdkSpec) {
22
- // create a transfer sdk object
23
- var transferObject = (0, core_1.getSdkTransfer)(transferSpec);
24
- transferObject.httpDownloadExternalHandle = true;
25
- (0, core_1.sendTransferUpdate)(transferObject);
26
- var triggerFailed = function (error) {
27
- var errorData = (0, core_1.getMessageFromError)(error.response || error);
28
- transferObject.status = 'failed';
29
- transferObject.error_code = errorData.code;
30
- transferObject.error_desc = errorData.message;
31
- (0, core_1.sendTransferUpdate)(transferObject);
32
- };
33
- var url = new URL((asperaSdkSpec === null || asperaSdkSpec === void 0 ? void 0 : asperaSdkSpec.http_gateway_override_server_url) || index_1.asperaSdk.globals.httpGatewayUrl);
34
- var headers = {
35
- 'Content-Type': 'application/json',
36
- accept: 'application/json',
37
- };
38
- if (asperaSdkSpec === null || asperaSdkSpec === void 0 ? void 0 : asperaSdkSpec.http_gateway_authentication) {
39
- headers['Authorization'] = "Bearer ".concat(asperaSdkSpec.http_gateway_authentication.token);
40
- headers['X-Aspera-AccessKey'] = asperaSdkSpec.http_gateway_authentication.access_key;
41
- }
42
- return fetch("".concat(url.toString(), "/presign"), {
43
- method: 'POST',
44
- headers: headers,
45
- body: (0, helpers_1.safeJsonString)({
46
- transfer_spec: transferSpec,
47
- method: 'GET',
48
- protocol: 'http',
49
- headers: {
50
- host: url.host,
51
- },
52
- }),
53
- }).then(function (response) {
54
- return response.json().then(function (data) {
55
- return {
56
- headers: response.headers,
57
- body: data,
58
- status: response.status,
59
- };
60
- });
61
- }).then(function (response) {
62
- if (response.status >= 400) {
63
- triggerFailed(response.body);
64
- return transferObject;
65
- }
66
- transferObject.httpRequestId = response.headers.get('X-Request-Id');
67
- transferObject.status = 'running';
68
- (0, core_1.sendTransferUpdate)(transferObject);
69
- var iframe = document.createElement('iframe');
70
- iframe.src = response.body.signed_url;
71
- iframe.width = '1px';
72
- iframe.height = '1px';
73
- index_1.asperaSdk.globals.httpGatewayIframeContainer.appendChild(iframe);
74
- return transferObject;
75
- }).catch(function (error) {
76
- triggerFailed(error);
77
- return transferObject;
78
- });
79
- };
80
- /**
81
- * HTTP Gateway Download Logic for in browser download with progress
82
- * This is used when the transfer size is known and under the threshold
83
- *
84
- * @param transferSpec - TransferSpec for the download
85
- * @param asperaSdkSpec IBM Aspera settings when starting a transfer.
86
- *
87
- * @returns Promise that resolves on success invoke or rejects if unable to start
88
- *
89
- * @remarks
90
- * This function is used internally and not exported.
91
- */
92
- var httpDownloadInBrowser = function (transferSpec, asperaSdkSpec) {
93
- // create a transfer sdk object
94
- var transferObject = (0, core_1.getSdkTransfer)(transferSpec);
95
- var triggerFailed = function (error) {
96
- var errorData = (0, core_1.getMessageFromError)(error.response || error);
97
- transferObject.status = 'failed';
98
- transferObject.error_code = errorData.code;
99
- transferObject.error_desc = errorData.message;
100
- (0, core_1.sendTransferUpdate)(transferObject);
101
- };
102
- (0, core_1.sendTransferUpdate)(transferObject);
103
- var headers = {
104
- 'X-Aspera-Spec': (0, core_1.base64Encoding)((0, helpers_1.safeJsonString)(transferSpec)),
105
- };
106
- if (asperaSdkSpec === null || asperaSdkSpec === void 0 ? void 0 : asperaSdkSpec.http_gateway_authentication) {
107
- headers['Authorization'] = "Bearer ".concat(asperaSdkSpec.http_gateway_authentication.token);
108
- headers['X-Aspera-AccessKey'] = asperaSdkSpec.http_gateway_authentication.access_key;
109
- }
110
- fetch("".concat((asperaSdkSpec === null || asperaSdkSpec === void 0 ? void 0 : asperaSdkSpec.http_gateway_override_server_url) || index_1.asperaSdk.globals.httpGatewayUrl, "/download"), { method: 'GET', headers: headers }).then(function (data) {
111
- var responseHeaders = data.headers;
112
- transferObject.httpRequestId = responseHeaders.get('X-Request-Id');
113
- var chunks = [];
114
- var reader = data.body.getReader();
115
- transferObject.status = 'running';
116
- (0, core_1.sendTransferUpdate)(transferObject);
117
- transferObject.bytes_expected = Number(responseHeaders.get('Content-Length') || 0);
118
- var readBytes = function () {
119
- reader.read().then(function (content) {
120
- var _a;
121
- if (content.done) {
122
- if (data.status >= 400 || !transferObject.bytes_written) {
123
- triggerFailed(data.body);
124
- return;
125
- }
126
- transferObject.status = 'completed';
127
- (0, core_1.sendTransferUpdate)(transferObject);
128
- var blobData = new Blob(chunks, { type: responseHeaders.get('Content-Type') });
129
- var objectURL = URL.createObjectURL(blobData);
130
- var a = document.createElement('a');
131
- a.href = objectURL;
132
- a.setAttribute('style', 'display: none;');
133
- a.download = (responseHeaders.get('Content-Disposition') || 'download').replace('attachment; filename="', '').replace('"', '');
134
- document.body.appendChild(a);
135
- a.click();
136
- document.body.removeChild(a);
137
- URL.revokeObjectURL(objectURL);
138
- }
139
- else {
140
- chunks.push(content.value);
141
- transferObject.status = 'running';
142
- transferObject.bytes_written += ((_a = content.value) === null || _a === void 0 ? void 0 : _a.length) || 0;
143
- transferObject.percentage = (transferObject.bytes_written / transferObject.bytes_expected);
144
- (0, core_1.sendTransferUpdate)(transferObject);
145
- readBytes();
146
- }
147
- }).catch(function (error) {
148
- triggerFailed(error);
149
- });
150
- };
151
- readBytes();
152
- }).catch(function (error) {
153
- triggerFailed(error);
154
- });
155
- return Promise.resolve(transferObject);
156
- };
157
- /**
158
- * HTTP Gateway Download Logic
159
- *
160
- * @param transferSpec - TransferSpec for the download
161
- * @param asperaSdkSpec IBM Aspera settings when starting a transfer.
162
- *
163
- * @returns Promise that resolves on success invoke or rejects if unable to start
164
- *
165
- * @remarks
166
- * Most logic is called directly by Desktop SDK functions
167
- * You may not need to import anything from this file.
168
- */
169
- var httpDownload = function (transferSpec, asperaSdkSpec) {
170
- if (!index_1.asperaSdk.httpGatewayIsReady) {
171
- return (0, helpers_1.throwError)(messages_1.messages.serverNotVerified, { type: 'download' });
172
- }
173
- if (index_1.asperaSdk.useOldHttpGateway) {
174
- return (0, http_gateway_sdk_js_1.download)(transferSpec);
175
- }
176
- if (transferSpec.tags &&
177
- transferSpec.tags.aspera &&
178
- transferSpec.tags.aspera['http-gateway'] &&
179
- transferSpec.tags.aspera['http-gateway'].expected_size <= index_1.asperaSdk.httpGatewayInBrowserDownloadThreshold) {
180
- return httpDownloadInBrowser(transferSpec, asperaSdkSpec);
181
- }
182
- else {
183
- return httpDownloadPresigned(transferSpec, asperaSdkSpec);
184
- }
185
- };
186
- exports.httpDownload = httpDownload;
@@ -1,11 +0,0 @@
1
- import { httpDownload } from './download';
2
- import { httpUpload } from './upload';
3
- import { handleHttpGatewayDrop, httpGatewaySelectFileFolderDialog, createHtmlInputElement } from './core';
4
- /**
5
- * HTTP Gateway Exports
6
- *
7
- * @remarks
8
- * Most logic is called directly by Desktop SDK functions
9
- * You may not need to import anything from this file.
10
- */
11
- export { httpUpload, httpDownload, handleHttpGatewayDrop, httpGatewaySelectFileFolderDialog, createHtmlInputElement, };
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createHtmlInputElement = exports.httpGatewaySelectFileFolderDialog = exports.handleHttpGatewayDrop = exports.httpDownload = exports.httpUpload = void 0;
4
- var download_1 = require("./download");
5
- Object.defineProperty(exports, "httpDownload", { enumerable: true, get: function () { return download_1.httpDownload; } });
6
- var upload_1 = require("./upload");
7
- Object.defineProperty(exports, "httpUpload", { enumerable: true, get: function () { return upload_1.httpUpload; } });
8
- var core_1 = require("./core");
9
- Object.defineProperty(exports, "handleHttpGatewayDrop", { enumerable: true, get: function () { return core_1.handleHttpGatewayDrop; } });
10
- Object.defineProperty(exports, "httpGatewaySelectFileFolderDialog", { enumerable: true, get: function () { return core_1.httpGatewaySelectFileFolderDialog; } });
11
- Object.defineProperty(exports, "createHtmlInputElement", { enumerable: true, get: function () { return core_1.createHtmlInputElement; } });
@@ -1,16 +0,0 @@
1
- export interface HttpGatewayInfo {
2
- version: string;
3
- name: string;
4
- upload_endpoint: string[];
5
- download_endpoint: string[];
6
- endpoints: string[];
7
- }
8
- export interface HttpGatewayDownloadLegacy {
9
- transfer_spec_id: string;
10
- url: string;
11
- }
12
- export type HttpGatewayDownload = ReadableStream<Uint8Array<ArrayBuffer>>;
13
- export type HttpGatewayUpload = null;
14
- export interface HttpGatewayPresign {
15
- signed_url: string;
16
- }
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,14 +0,0 @@
1
- import { AsperaSdkSpec, AsperaSdkTransfer, TransferSpec } from '../models/models';
2
- /**
3
- * HTTP Gateway Upload Logic
4
- *
5
- * @param transferSpec - TransferSpec for the upload
6
- * @param asperaSdkSpec IBM Aspera settings when starting a transfer.
7
- *
8
- * @returns Promise that resolves on success invoke or rejects if unable to start
9
- *
10
- * @remarks
11
- * Most logic is called directly by Desktop SDK functions
12
- * You may not need to import anything from this file.
13
- */
14
- export declare const httpUpload: (transferSpec: TransferSpec, asperaSdkSpec?: AsperaSdkSpec) => Promise<AsperaSdkTransfer>;