UNPKG

@itwin/object-storage-s3

Version:

Object storage implementation base for S3 compatible providers

43 lines 2.62 kB
"use strict"; 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