@itwin/object-storage-s3
Version:
Object storage implementation base for S3 compatible providers
43 lines • 2.62 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.S3FrontendStorage = void 0;
/*---------------------------------------------------------------------------------------------
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
* See LICENSE.md in the project root for license terms and full copyright notice.
*--------------------------------------------------------------------------------------------*/
const internal_1 = require("@itwin/object-storage-core/lib/common/internal");
const frontend_1 = require("@itwin/object-storage-core/lib/frontend");
const internal_2 = require("@itwin/object-storage-core/lib/frontend/internal");
const internal_3 = require("./internal");
class S3FrontendStorage extends frontend_1.FrontendStorage {
_clientWrapperFactory;
constructor(_clientWrapperFactory) {
super();
this._clientWrapperFactory = _clientWrapperFactory;
}
async download(input) {
if ((0, internal_1.instanceOfUrlTransferInput)(input))
return (0, internal_2.downloadFromUrlFrontend)(input);
else
(0, internal_1.assertRelativeDirectory)(input.reference.relativeDirectory);
return (0, internal_3.createAndUseClientFrontend)(() => this._clientWrapperFactory.create(input.transferConfig), async (clientWrapper) => {
const downloadStream = await clientWrapper.download(input.reference);
return (0, internal_2.streamToTransferTypeFrontend)(downloadStream, input.transferType);
});
}
async upload(input) {
const { data, metadata } = input;
if ((0, internal_1.instanceOfUrlTransferInput)(input))
return (0, internal_2.uploadToUrlFrontend)(input.url, data, "PUT", metadata ? (0, internal_1.metadataToHeaders)(metadata, "x-amz-meta-") : undefined);
else {
(0, internal_1.assertRelativeDirectory)(input.reference.relativeDirectory);
return (0, internal_3.createAndUseClientFrontend)(() => this._clientWrapperFactory.create(input.transferConfig), async (clientWrapper) => clientWrapper.upload(input.reference, data, metadata));
}
}
async uploadInMultipleParts(input) {
(0, internal_1.assertRelativeDirectory)(input.reference.relativeDirectory);
return (0, internal_3.createAndUseClientFrontend)(() => this._clientWrapperFactory.create(input.transferConfig), async (clientWrapper) => clientWrapper.uploadInMultipleParts(input.reference, input.data, input.options));
}
}
exports.S3FrontendStorage = S3FrontendStorage;
//# sourceMappingURL=S3FrontendStorage.js.map