From 500fe79ed0d6f6e6892ba2ba6187fbafdae426e5 Mon Sep 17 00:00:00 2001 From: mei23 Date: Mon, 30 Aug 2021 08:02:52 +0900 Subject: [PATCH] fix download bug --- src/misc/download-url.ts | 6 +++++- src/remote/activitypub/models/image.ts | 2 +- src/server/file/send-drive-file.ts | 2 +- src/server/file/send-emoji.ts | 4 ++-- src/server/proxy/proxy-media.ts | 2 +- 5 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/misc/download-url.ts b/src/misc/download-url.ts index 4a348522bb52..22670fe2d765 100644 --- a/src/misc/download-url.ts +++ b/src/misc/download-url.ts @@ -61,7 +61,11 @@ export async function downloadUrl(url: string, path: string) { } }).on('error', (e: any) => { if (e.name === 'HTTPError') { - throw e.response?.statusCode; + const statusCode = e.response?.statusCode; + const statusMessage = e.response?.statusMessage; + e.name = `StatusError`; + e.statusCode = statusCode; + e.message = `${statusCode} ${statusMessage}`; } }); diff --git a/src/remote/activitypub/models/image.ts b/src/remote/activitypub/models/image.ts index 420268ba8c8d..b9dbbe5eb4b7 100644 --- a/src/remote/activitypub/models/image.ts +++ b/src/remote/activitypub/models/image.ts @@ -35,7 +35,7 @@ export async function createImage(actor: IRemoteUser, value: IObject): Promise= 400 && e < 500) { + if (e.statusCode >= 400 && e.statusCode < 500) { logger.warn(`Ignored image: ${image.url} - ${e}`); return null; } diff --git a/src/server/file/send-drive-file.ts b/src/server/file/send-drive-file.ts index 8a3df479b213..330943363c03 100644 --- a/src/server/file/send-drive-file.ts +++ b/src/server/file/send-drive-file.ts @@ -81,7 +81,7 @@ export default async function(ctx: Router.RouterContext) { return await sendNormal(ctx, file.data, file.type); } catch (e) { serverLogger.error(e); - return await sendError(ctx, typeof e === 'number' && e >= 400 && e < 500 ? e : 500); + return await sendError(ctx, typeof e.statusCode === 'number' && e.statusCode >= 400 && e.statusCode < 500 ? e.statusCode : 500); } finally { cleanup(); } diff --git a/src/server/file/send-emoji.ts b/src/server/file/send-emoji.ts index 07568a36eabe..e1a5b69770ec 100644 --- a/src/server/file/send-emoji.ts +++ b/src/server/file/send-emoji.ts @@ -58,12 +58,12 @@ export default async function(ctx: Router.RouterContext) { }); }; - if (typeof e == 'number' && e >= 400 && e < 500) { + if (typeof e.statusCode === 'number' && e.statusCode >= 400 && e.statusCode < 500) { // 4xx defered(); ctx.status = e; ctx.set('Cache-Control', 'max-age=86400'); - } else if (typeof e == 'number') { + } else if (typeof e.statusCode === 'number') { // other status code ctx.status = 500; ctx.set('Cache-Control', 'max-age=300'); diff --git a/src/server/proxy/proxy-media.ts b/src/server/proxy/proxy-media.ts index a4f7e96a38f1..b1cc64bdf18f 100644 --- a/src/server/proxy/proxy-media.ts +++ b/src/server/proxy/proxy-media.ts @@ -39,7 +39,7 @@ export async function proxyMedia(ctx: Router.RouterContext) { } catch (e) { serverLogger.error(e); - if (typeof e == 'number' && e >= 400 && e < 500) { + if (typeof e.statusCode === 'number' && e.statusCode >= 400 && e.statusCode < 500) { ctx.status = e; ctx.set('Cache-Control', 'max-age=86400'); } else {