From f2a0c93ba84ea4f04d57133f15552e6e44e204a2 Mon Sep 17 00:00:00 2001 From: Quan HL Date: Fri, 28 Jul 2023 17:48:44 +0700 Subject: [PATCH] add google storage writablestream --- lib/record/utils.js | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 lib/record/utils.js diff --git a/lib/record/utils.js b/lib/record/utils.js new file mode 100644 index 0000000..a63ff8d --- /dev/null +++ b/lib/record/utils.js @@ -0,0 +1,40 @@ +const GoogleStorageUploadStream = require('./google-storage'); +const S3MultipartUploadStream = require('./s3-multipart-upload-stream'); + +const getUploader = (Key, metadata, bucket_credential, logger) => { + const uploaderOpts = { + bucketName: bucket_credential.name, + Key, + metadata + }; + switch (bucket_credential.vendor) { + case 'aws_s3': + uploaderOpts.bucketCredential = { + credentials: { + accessKeyId: bucket_credential.access_key_id, + secretAccessKey: bucket_credential.secret_access_key, + }, + region: bucket_credential.region || 'us-east-1' + }; + return new S3MultipartUploadStream(logger, uploaderOpts); + case 'google': + const serviceKey = JSON.parse(bucket_credential.service_key); + uploaderOpts.bucketCredential = { + projectId: serviceKey.project_id, + credentials: { + client_email: serviceKey.client_email, + private_key: serviceKey.private_key + } + }; + return new GoogleStorageUploadStream(logger, uploaderOpts); + + default: + logger.error(`unknown bucket vendor: ${bucket_credential.vendor}`); + break; + } + return null; +}; + +module.exports = { + getUploader +};