From bcb04924ff08cc90d046ec7064fa0b89cbf9219e Mon Sep 17 00:00:00 2001 From: MeiMei <30769358+mei23@users.noreply.github.com> Date: Mon, 26 Nov 2018 04:25:48 +0900 Subject: Image for web publish (#3402) * Image for Web * Add comment * Make main to original --- src/server/file/send-drive-file.ts | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/server/file') 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'); -- cgit v1.2.3-freya