From 1b8acb7e01dc70e61f4072dcefc062a6649e9145 Mon Sep 17 00:00:00 2001 From: syuilo Date: Tue, 17 Apr 2018 20:04:19 +0900 Subject: [PATCH] tombstone --- src/models/drive-file.ts | 1 + src/server/file/assets/tombstone.png | Bin 0 -> 6387 bytes src/server/file/send-drive-file.ts | 6 ++++++ 3 files changed, 7 insertions(+) create mode 100644 src/server/file/assets/tombstone.png diff --git a/src/models/drive-file.ts b/src/models/drive-file.ts index 0d0a6523de..a8878d1197 100644 --- a/src/models/drive-file.ts +++ b/src/models/drive-file.ts @@ -29,6 +29,7 @@ export type IMetadata = { folderId: mongo.ObjectID; comment: string; uri: string; + deletedAt?: Date; }; export type IDriveFile = { diff --git a/src/server/file/assets/tombstone.png b/src/server/file/assets/tombstone.png new file mode 100644 index 0000000000000000000000000000000000000000..86224e318246d987b32aaa206bfdde8fbf83b740 GIT binary patch literal 6387 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 I&MBb@0M)UnaR2}S literal 0 HcmV?d00001 diff --git a/src/server/file/send-drive-file.ts b/src/server/file/send-drive-file.ts index e6ee19ff1d..ef458265a8 100644 --- a/src/server/file/send-drive-file.ts +++ b/src/server/file/send-drive-file.ts @@ -22,6 +22,12 @@ export default async function(ctx: Koa.Context) { return; } + if (file.metadata.deletedAt) { + ctx.status = 410; + await send(ctx, `${__dirname}/assets/tombstone.png`); + return; + } + const bucket = await getGridFSBucket(); const readable = bucket.openDownloadStream(fileId);