UNPKG

3.22 kBJavaScriptView Raw
1import { Amplify } from '@aws-amplify/core';
2import { StorageAction } from '@aws-amplify/core/internals/utils';
3import { resolveS3ConfigAndInput } from '../utils/resolveS3ConfigAndInput.mjs';
4import '@smithy/md5-js';
5import '@aws-amplify/core/internals/aws-client-utils';
6import '../utils/client/runtime/s3TransferHandler/fetch.mjs';
7import 'fast-xml-parser';
8import '../utils/client/runtime/s3TransferHandler/xhr.mjs';
9import 'buffer';
10import { createDownloadTask } from '../utils/transferTask.mjs';
11import { validateStorageOperationInput } from '../utils/validateStorageOperationInput.mjs';
12import '../../../errors/types/validation.mjs';
13import { STORAGE_INPUT_KEY } from '../utils/constants.mjs';
14import '../utils/client/base.mjs';
15import { getObject } from '../utils/client/getObject.mjs';
16import '../utils/client/listObjectsV2.mjs';
17import '../utils/client/putObject.mjs';
18import '../utils/client/createMultipartUpload.mjs';
19import '../utils/client/uploadPart.mjs';
20import '../utils/client/completeMultipartUpload.mjs';
21import '../utils/client/listParts.mjs';
22import '../utils/client/abortMultipartUpload.mjs';
23import '../utils/client/copyObject.mjs';
24import '../utils/client/headObject.mjs';
25import '../utils/client/deleteObject.mjs';
26import { getStorageUserAgentValue } from '../utils/userAgent.mjs';
27import { logger } from '../../../utils/logger.mjs';
28
29// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
30// SPDX-License-Identifier: Apache-2.0
31function downloadData(input) {
32 const abortController = new AbortController();
33 const downloadTask = createDownloadTask({
34 job: downloadDataJob(input, abortController.signal),
35 onCancel: (message) => {
36 abortController.abort(message);
37 },
38 });
39 return downloadTask;
40}
41const downloadDataJob = (downloadDataInput, abortSignal) => async () => {
42 const { options: downloadDataOptions } = downloadDataInput;
43 const { bucket, keyPrefix, s3Config, identityId } = await resolveS3ConfigAndInput(Amplify, downloadDataOptions);
44 const { inputType, objectKey } = validateStorageOperationInput(downloadDataInput, identityId);
45 const finalKey = inputType === STORAGE_INPUT_KEY ? keyPrefix + objectKey : objectKey;
46 logger.debug(`download ${objectKey} from ${finalKey}.`);
47 const { Body: body, LastModified: lastModified, ContentLength: size, ETag: eTag, Metadata: metadata, VersionId: versionId, ContentType: contentType, } = await getObject({
48 ...s3Config,
49 abortSignal,
50 onDownloadProgress: downloadDataOptions?.onProgress,
51 userAgentValue: getStorageUserAgentValue(StorageAction.DownloadData),
52 }, {
53 Bucket: bucket,
54 Key: finalKey,
55 ...(downloadDataOptions?.bytesRange && {
56 Range: `bytes=${downloadDataOptions.bytesRange.start}-${downloadDataOptions.bytesRange.end}`,
57 }),
58 });
59 const result = {
60 body,
61 lastModified,
62 size,
63 contentType,
64 eTag,
65 metadata,
66 versionId,
67 };
68 return inputType === STORAGE_INPUT_KEY
69 ? { key: objectKey, ...result }
70 : { path: objectKey, ...result };
71};
72
73export { downloadData };
74//# sourceMappingURL=downloadData.mjs.map