diff --git a/server/api/api/v1/markers/index.ts b/server/api/api/v1/markers/index.ts index 04272e63..3f9de30e 100644 --- a/server/api/api/v1/markers/index.ts +++ b/server/api/api/v1/markers/index.ts @@ -34,6 +34,7 @@ export const schemas = { "timeline[]": z .array(z.enum(["home", "notifications"])) .max(2) + .or(z.enum(["home", "notifications"])) .optional(), "home[last_read_id]": z.string().regex(idValidator).optional(), "notifications[last_read_id]": z.string().regex(idValidator).optional(), @@ -47,9 +48,11 @@ export default (app: Hono) => zValidator("query", schemas.query, handleZodError), auth(meta.auth), async (context) => { - const { "timeline[]": timeline } = context.req.valid("query"); + const { "timeline[]": timelines } = context.req.valid("query"); const { user } = context.req.valid("header"); + const timeline = Array.isArray(timelines) ? timelines : []; + if (!user) { return errorResponse("Unauthorized", 401); } diff --git a/server/api/api/v1/statuses/index.test.ts b/server/api/api/v1/statuses/index.test.ts index e4065bae..feaf2ce9 100644 --- a/server/api/api/v1/statuses/index.test.ts +++ b/server/api/api/v1/statuses/index.test.ts @@ -178,13 +178,15 @@ describe(meta.route, () => { }); test("should create a post with visibility", async () => { + // This one uses JSON to test the interop const response = await sendTestRequest( new Request(new URL(meta.route, config.http.base_url), { method: "POST", headers: { Authorization: `Bearer ${tokens[0].accessToken}`, + "Content-Type": "application/json", }, - body: new URLSearchParams({ + body: JSON.stringify({ status: "Hello, world!", visibility: "unlisted", federate: "false", diff --git a/server/api/api/v1/statuses/index.ts b/server/api/api/v1/statuses/index.ts index ae5e50bc..107635f3 100644 --- a/server/api/api/v1/statuses/index.ts +++ b/server/api/api/v1/statuses/index.ts @@ -1,4 +1,4 @@ -import { applyConfig, auth, handleZodError, qs } from "@api"; +import { applyConfig, auth, handleZodError, jsonOrForm, qs } from "@api"; import { zValidator } from "@hono/zod-validator"; import { errorResponse, jsonResponse } from "@response"; import { config } from "config-manager"; @@ -83,7 +83,7 @@ export default (app: Hono) => app.on( meta.allowedMethods, meta.route, - qs(), + jsonOrForm(), zValidator("form", schemas.form, handleZodError), auth(meta.auth), async (context) => {