UNPKG

@itwin/object-storage-s3

Version:

Object storage implementation base for S3 compatible providers

60 lines 3.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.S3ClientStorage = 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 fs_1 = require("fs"); const internal_1 = require("@itwin/object-storage-core/lib/common/internal"); const internal_2 = require("@itwin/object-storage-core/lib/server/internal"); const object_storage_core_1 = require("@itwin/object-storage-core"); const internal_3 = require("../server/internal"); const Helpers_1 = require("./internal/Helpers"); class S3ClientStorage extends object_storage_core_1.ClientStorage { _clientWrapperFactory; constructor(_clientWrapperFactory) { super(); this._clientWrapperFactory = _clientWrapperFactory; } async download(input) { if ((0, internal_1.instanceOfUrlTransferInput)(input)) return (0, internal_2.downloadFromUrl)(input); else (0, internal_1.assertRelativeDirectory)(input.reference.relativeDirectory); const options = { abortSignal: input.abortSignal ? (0, object_storage_core_1.createClientAbortSignal)(input.abortSignal) : undefined, }; return (0, internal_3.createAndUseClient)(() => this._clientWrapperFactory.create(input.transferConfig), async (clientWrapper) => { const downloadStream = await clientWrapper.download(input.reference, options); return (0, internal_2.streamToTransferType)(downloadStream, input.transferType, input.localPath); }); } async upload(input) { if ((0, internal_1.instanceOfUrlTransferInput)(input)) return (0, Helpers_1.handleS3UrlUpload)(input); let { data } = input; const { metadata } = input; if ("reference" in input) (0, internal_1.assertRelativeDirectory)(input.reference.relativeDirectory); if (typeof data === "string") { await (0, internal_2.assertFileNotEmpty)(data); data = (0, fs_1.createReadStream)(data); } return (0, internal_3.createAndUseClient)(() => this._clientWrapperFactory.create(input.transferConfig), async (clientWrapper) => clientWrapper.upload(input.reference, data, metadata)); } async uploadInMultipleParts(input) { let { data } = input; if ("reference" in input) (0, internal_1.assertRelativeDirectory)(input.reference.relativeDirectory); if (typeof data === "string") { await (0, internal_2.assertFileNotEmpty)(data); data = (0, fs_1.createReadStream)(data); } return (0, internal_3.createAndUseClient)(() => this._clientWrapperFactory.create(input.transferConfig), async (clientWrapper) => clientWrapper.uploadInMultipleParts(input.reference, data, input.options)); } } exports.S3ClientStorage = S3ClientStorage; //# sourceMappingURL=S3ClientStorage.js.map