@itwin/object-storage-minio
Version:
Object storage implementation using Minio
35 lines • 1.72 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.handleMinioUrlUpload = handleMinioUrlUpload;
/*---------------------------------------------------------------------------------------------
* 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 handleMinioUrlUpload(input) {
// minio responds with 411 error if Content-Length header is not present
// used streamToBuffer to get the length before uploading for streams
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 metaHeaders = metadata
? (0, internal_1.metadataToHeaders)(metadata, "x-amz-meta-")
: undefined;
const headers = {
...metaHeaders,
// 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
;