diff options
| author | MeiMei <30769358+mei23@users.noreply.github.com> | 2018-11-26 04:25:48 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2018-11-26 04:25:48 +0900 |
| commit | bcb04924ff08cc90d046ec7064fa0b89cbf9219e (patch) | |
| tree | 8ba56067c7be24ca06a833e84f052309773da831 /src/server/file | |
| parent | :art: (diff) | |
| download | sharkey-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.ts | 19 |
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'); |