From 5074ac788ff4fc09786e54b969832f27000f8f61 Mon Sep 17 00:00:00 2001 From: Jesse Wierzbinski Date: Sat, 7 Dec 2024 13:24:24 +0100 Subject: [PATCH] fix(api): :bug: Force text content-type header on all empty responses Fixes a problem where the content-type would default to application/json --- api/api/v1/accounts/:id/roles/:role_id/index.ts | 4 ++-- api/api/v1/accounts/index.test.ts | 1 + api/api/v1/accounts/index.ts | 2 +- api/api/v1/emojis/:id/index.ts | 2 +- api/api/v1/notifications/:id/dismiss.ts | 2 +- api/api/v1/notifications/clear/index.ts | 2 +- api/api/v1/notifications/destroy_multiple/index.ts | 2 +- api/api/v1/roles/:id/index.ts | 4 ++-- api/api/v2/filters/:id/index.ts | 2 +- api/messaging/index.ts | 2 +- plugins/openid/routes/sso/:id/index.ts | 2 +- 11 files changed, 13 insertions(+), 12 deletions(-) diff --git a/api/api/v1/accounts/:id/roles/:role_id/index.ts b/api/api/v1/accounts/:id/roles/:role_id/index.ts index e9a9e2df..9ac7a682 100644 --- a/api/api/v1/accounts/:id/roles/:role_id/index.ts +++ b/api/api/v1/accounts/:id/roles/:role_id/index.ts @@ -146,7 +146,7 @@ export default apiRoute((app) => { await role.linkUser(targetUser.id); - return context.body(null, 204); + return context.text("", 204); }); app.openapi(routeDelete, async (context) => { @@ -186,6 +186,6 @@ export default apiRoute((app) => { await role.unlinkUser(targetUser.id); - return context.body(null, 204); + return context.text("", 204); }); }); diff --git a/api/api/v1/accounts/index.test.ts b/api/api/v1/accounts/index.test.ts index a715f765..e4415654 100644 --- a/api/api/v1/accounts/index.test.ts +++ b/api/api/v1/accounts/index.test.ts @@ -34,6 +34,7 @@ describe(meta.route, () => { }); expect(response.ok).toBe(true); + expect(response.headers.get("Content-Type")).not.toContain("json"); }); test("should refuse invalid emails", async () => { diff --git a/api/api/v1/accounts/index.ts b/api/api/v1/accounts/index.ts index 5b10adfa..baaecca5 100644 --- a/api/api/v1/accounts/index.ts +++ b/api/api/v1/accounts/index.ts @@ -337,6 +337,6 @@ export default apiRoute((app) => email: email ?? "", }); - return context.body(null, 200); + return context.text("", 200); }), ); diff --git a/api/api/v1/emojis/:id/index.ts b/api/api/v1/emojis/:id/index.ts index 9ce64288..b7a35e64 100644 --- a/api/api/v1/emojis/:id/index.ts +++ b/api/api/v1/emojis/:id/index.ts @@ -352,6 +352,6 @@ export default apiRoute((app) => { await db.delete(Emojis).where(eq(Emojis.id, id)); - return context.body(null, 204); + return context.text("", 204); }); }); diff --git a/api/api/v1/notifications/:id/dismiss.ts b/api/api/v1/notifications/:id/dismiss.ts index 76691fba..b474fc01 100644 --- a/api/api/v1/notifications/:id/dismiss.ts +++ b/api/api/v1/notifications/:id/dismiss.ts @@ -68,6 +68,6 @@ export default apiRoute((app) => dismissed: true, }); - return context.body(null, 200); + return context.text("", 200); }), ); diff --git a/api/api/v1/notifications/clear/index.ts b/api/api/v1/notifications/clear/index.ts index 1d3b5792..5a7fa54b 100644 --- a/api/api/v1/notifications/clear/index.ts +++ b/api/api/v1/notifications/clear/index.ts @@ -47,6 +47,6 @@ export default apiRoute((app) => await user.clearAllNotifications(); - return context.body(null, 200); + return context.text("", 200); }), ); diff --git a/api/api/v1/notifications/destroy_multiple/index.ts b/api/api/v1/notifications/destroy_multiple/index.ts index 6766f9c1..a8fdf10b 100644 --- a/api/api/v1/notifications/destroy_multiple/index.ts +++ b/api/api/v1/notifications/destroy_multiple/index.ts @@ -60,6 +60,6 @@ export default apiRoute((app) => await user.clearSomeNotifications(ids); - return context.body(null, 200); + return context.text("", 200); }), ); diff --git a/api/api/v1/roles/:id/index.ts b/api/api/v1/roles/:id/index.ts index 2627f8ea..a10fd802 100644 --- a/api/api/v1/roles/:id/index.ts +++ b/api/api/v1/roles/:id/index.ts @@ -226,7 +226,7 @@ export default apiRoute((app) => { visible, }); - return context.body(null, 204); + return context.text("", 204); }); app.openapi(routeDelete, async (context) => { @@ -261,6 +261,6 @@ export default apiRoute((app) => { await role.delete(); - return context.body(null, 204); + return context.text("", 204); }); }); diff --git a/api/api/v2/filters/:id/index.ts b/api/api/v2/filters/:id/index.ts index f39f418f..ea6c3626 100644 --- a/api/api/v2/filters/:id/index.ts +++ b/api/api/v2/filters/:id/index.ts @@ -343,6 +343,6 @@ export default apiRoute((app) => { .delete(Filters) .where(and(eq(Filters.userId, user.id), eq(Filters.id, id))); - return context.body(null, 204); + return context.text("", 204); }); }); diff --git a/api/messaging/index.ts b/api/messaging/index.ts index dca713d8..3f197d4d 100644 --- a/api/messaging/index.ts +++ b/api/messaging/index.ts @@ -43,6 +43,6 @@ export default apiRoute((app) => getLogger(["federation", "messaging"]) .info`Received message via ${chalk.bold("Instance Messaging")}:\n${content}`; - return context.body(null, 200); + return context.text("", 200); }), ); diff --git a/plugins/openid/routes/sso/:id/index.ts b/plugins/openid/routes/sso/:id/index.ts index 4d3dbbe8..91cf47da 100644 --- a/plugins/openid/routes/sso/:id/index.ts +++ b/plugins/openid/routes/sso/:id/index.ts @@ -201,7 +201,7 @@ export default (plugin: PluginType): void => { .delete(OpenIdAccounts) .where(eq(OpenIdAccounts.id, account.id)); - return context.body(null, 204); + return context.text("", 204); }, ); });