summaryrefslogtreecommitdiff
path: root/src/server/file
diff options
context:
space:
mode:
authorMeiMei <30769358+mei23@users.noreply.github.com>2018-11-26 04:25:48 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2018-11-26 04:25:48 +0900
commitbcb04924ff08cc90d046ec7064fa0b89cbf9219e (patch)
tree8ba56067c7be24ca06a833e84f052309773da831 /src/server/file
parent:art: (diff)
downloadsharkey-bcb04924ff08cc90d046ec7064fa0b89cbf9219e.tar.gz
sharkey-bcb04924ff08cc90d046ec7064fa0b89cbf9219e.tar.bz2
sharkey-bcb04924ff08cc90d046ec7064fa0b89cbf9219e.zip
Image for web publish (#3402)
* Image for Web * Add comment * Make main to original
Diffstat (limited to 'src/server/file')
-rw-r--r--src/server/file/send-drive-file.ts19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/server/file/send-drive-file.ts b/src/server/file/send-drive-file.ts
index b904bda91b..c64177d4ee 100644
--- a/src/server/file/send-drive-file.ts
+++ b/src/server/file/send-drive-file.ts
@@ -3,6 +3,7 @@ import * as send from 'koa-send';
import * as mongodb from 'mongodb';
import DriveFile, { getDriveFileBucket } from '../../models/drive-file';
import DriveFileThumbnail, { getDriveFileThumbnailBucket } from '../../models/drive-file-thumbnail';
+import DriveFileWebpublic, { getDriveFileWebpublicBucket } from '../../models/drive-file-webpublic';
const assets = `${__dirname}/../../server/file/assets/`;
@@ -41,6 +42,11 @@ export default async function(ctx: Koa.Context) {
}
const sendRaw = async () => {
+ if (file.metadata && file.metadata.accessKey && file.metadata.accessKey != ctx.query['original']) {
+ ctx.status = 403;
+ return;
+ }
+
const bucket = await getDriveFileBucket();
const readable = bucket.openDownloadStream(fileId);
readable.on('error', commonReadableHandlerGenerator(ctx));
@@ -60,6 +66,19 @@ export default async function(ctx: Koa.Context) {
} else {
await sendRaw();
}
+ } else if ('web' in ctx.query) {
+ const web = await DriveFileWebpublic.findOne({
+ 'metadata.originalId': fileId
+ });
+
+ if (web != null) {
+ ctx.set('Content-Type', file.contentType);
+
+ const bucket = await getDriveFileWebpublicBucket();
+ ctx.body = bucket.openDownloadStream(web._id);
+ } else {
+ await sendRaw();
+ }
} else {
if ('download' in ctx.query) {
ctx.set('Content-Disposition', 'attachment');