@itwin/object-storage-s3
Version:
Object storage implementation base for S3 compatible providers
33 lines • 1.56 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.handleS3UrlUpload = handleS3UrlUpload;
/*---------------------------------------------------------------------------------------------
* 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 stream_1 = require("stream");
const internal_1 = require("@itwin/object-storage-core/lib/common/internal");
const internal_2 = require("@itwin/object-storage-core/lib/server/internal");
async function handleS3UrlUpload(input) {
const { data, metadata, url } = input;
let dataToUpload;
if (typeof data === "string") {
await (0, internal_2.assertFileNotEmpty)(data);
dataToUpload = await (0, internal_2.streamToBuffer)((0, fs_1.createReadStream)(data));
}
else if (data instanceof stream_1.Readable)
dataToUpload = await (0, internal_2.streamToBuffer)(data);
else
dataToUpload = data;
const metadataHeaders = metadata
? (0, internal_1.metadataToHeaders)(metadata, "x-amz-meta-")
: {};
const headers = {
...metadataHeaders,
// eslint-disable-next-line @typescript-eslint/naming-convention
"Content-Length": dataToUpload.byteLength.toString(),
};
return (0, internal_2.uploadToUrl)(url, dataToUpload, headers);
}
//# sourceMappingURL=Helpers.js.map