From e11edc7c8994818fbd9651ca70b94f13a7169d29 Mon Sep 17 00:00:00 2001 From: Moe Date: Sun, 7 Aug 2022 12:09:28 -0700 Subject: [PATCH] cleanup and proxy video data for cloud videos (s3based, amazonS3) --- libs/uploaders/amazonS3.js | 22 +++++++++++++++++----- libs/uploaders/s3based.js | 21 ++++++++++++++++----- 2 files changed, 33 insertions(+), 10 deletions(-) diff --git a/libs/uploaders/amazonS3.js b/libs/uploaders/amazonS3.js index ad827c28..0e886728 100644 --- a/libs/uploaders/amazonS3.js +++ b/libs/uploaders/amazonS3.js @@ -92,9 +92,8 @@ module.exports = function(s,config,lang){ s.group[e.ke].aws_s3.upload({ Bucket: s.group[e.ke].init.aws_s3_bucket, Key: saveLocation, - Body:fileStream, - ACL:'public-read', - ContentType:'video/'+ext + Body: fileStream, + ContentType: 'video/'+ext },function(err,data){ if(err){ s.userLog(e,{type:lang['Amazon S3 Upload Error'],msg:err}) @@ -114,7 +113,7 @@ module.exports = function(s,config,lang){ }), size: k.filesize, end: k.endTime, - href: data.Location + href: '' } }) s.setCloudDiskUsedForGroup(e.ke,{ @@ -152,6 +151,7 @@ module.exports = function(s,config,lang){ mid: queryInfo.mid, ke: queryInfo.ke, time: queryInfo.time, + filename: queryInfo.filename, details: s.s({ type : 's3', location : saveLocation @@ -190,6 +190,17 @@ module.exports = function(s,config,lang){ callback() }); } + function onGetVideoData(video){ + const videoDetails = s.parseJSON(video.details) + return new Promise((resolve, reject) => { + const saveLocation = videoDetails.location + var fileStream = s.group[video.ke].aws_s3.getObject({ + Bucket: s.group[video.ke].init.aws_s3_bucket, + Key: saveLocation, + }).createReadStream(); + resolve(fileStream) + }) + } //amazon s3 s.addCloudUploader({ name: 's3', @@ -201,7 +212,8 @@ module.exports = function(s,config,lang){ beforeAccountSave: beforeAccountSave, onAccountSave: cloudDiskUseStartup, onInsertTimelapseFrame: onInsertTimelapseFrame, - onDeleteTimelapseFrameFromCloud: onDeleteTimelapseFrameFromCloud + onDeleteTimelapseFrameFromCloud: onDeleteTimelapseFrameFromCloud, + onGetVideoData }) //return fields that will appear in settings return { diff --git a/libs/uploaders/s3based.js b/libs/uploaders/s3based.js index 98962faf..2f77b922 100644 --- a/libs/uploaders/s3based.js +++ b/libs/uploaders/s3based.js @@ -114,9 +114,8 @@ module.exports = function(s,config,lang){ s.group[e.ke].whcs.upload({ Bucket: bucketName, Key: saveLocation, - Body:fileStream, - ACL:'public-read', - ContentType:'video/'+ext + Body: fileStream, + ContentType: 'video/'+ext },options,function(err,data){ if(err){ console.error(err) @@ -177,7 +176,7 @@ module.exports = function(s,config,lang){ mid: queryInfo.mid, ke: queryInfo.ke, time: queryInfo.time, - filename: queryInfo.filename, + filename: queryInfo.filename, details: s.s({ type : 'whcs', location : saveLocation @@ -232,6 +231,17 @@ module.exports = function(s,config,lang){ } return cloudLink } + function onGetVideoData(video){ + const videoDetails = s.parseJSON(video.details) + return new Promise((resolve, reject) => { + const saveLocation = videoDetails.location + var fileStream = s.group[video.ke].whcs.getObject({ + Bucket: s.group[video.ke].init.whcs_bucket, + Key: saveLocation, + }).createReadStream(); + resolve(fileStream) + }) + } //wasabi s.addCloudUploader({ name: 'whcs', @@ -243,7 +253,8 @@ module.exports = function(s,config,lang){ beforeAccountSave: beforeAccountSaveForWasabiHotCloudStorage, onAccountSave: cloudDiskUseStartupForWasabiHotCloudStorage, onInsertTimelapseFrame: onInsertTimelapseFrame, - onDeleteTimelapseFrameFromCloud: onDeleteTimelapseFrameFromCloud + onDeleteTimelapseFrameFromCloud: onDeleteTimelapseFrameFromCloud, + onGetVideoData }) return { "evaluation": "details.use_whcs !== '0'",