diff --git a/fresh.gen.ts b/fresh.gen.ts index 43d3eb3..ceb9338 100644 --- a/fresh.gen.ts +++ b/fresh.gen.ts @@ -16,6 +16,7 @@ import * as $reset from "./routes/reset.ts"; import * as $u_event_followers from "./routes/u/event/followers.ts"; import * as $u_event_inbox from "./routes/u/event/inbox.ts"; import * as $u_event_index from "./routes/u/event/index.ts"; +import * as $u_event_outbox from "./routes/u/event/outbox.ts"; import * as $CopyToClipboard from "./islands/CopyToClipboard.tsx"; import * as $Counter from "./islands/Counter.tsx"; import * as $EventCard from "./islands/EventCard.tsx"; @@ -38,6 +39,7 @@ const manifest = { "./routes/u/event/followers.ts": $u_event_followers, "./routes/u/event/inbox.ts": $u_event_inbox, "./routes/u/event/index.ts": $u_event_index, + "./routes/u/event/outbox.ts": $u_event_outbox, }, islands: { "./islands/CopyToClipboard.tsx": $CopyToClipboard, diff --git a/routes/u/event/index.ts b/routes/u/event/index.ts index 725e44d..9369338 100644 --- a/routes/u/event/index.ts +++ b/routes/u/event/index.ts @@ -18,6 +18,7 @@ export const handler: Handlers = { "type": "Person", "discoverable": true, "inbox": `${entrypoint}u/event/inbox`, + "outbox": `${entrypoint}u/event/outbox`, "followers": `${entrypoint}u/event/followers`, "preferredUsername": "たまイベント", "name": "たまイベント", diff --git a/routes/u/event/outbox.ts b/routes/u/event/outbox.ts new file mode 100644 index 0000000..59776af --- /dev/null +++ b/routes/u/event/outbox.ts @@ -0,0 +1,20 @@ +import { Handlers } from "$fresh/server.ts"; +import { entrypoint } from "../../../const.ts"; +import { EventItem } from "../../../interface/EventItem.interface.ts"; +import { kv } from "../../../kv.ts"; + +export const handler: Handlers = { + async GET(_req, _ctx) { + const list = await kv.list({ prefix: ["eventItems"] }); + let eventCount = 0; + for await (const item of list) { + if (!item.value.permitted) continue; + eventCount++; + } + return Response.json({ + "@context": "https://www.w3.org/ns/activitystreams", + "id": `${entrypoint}u/event/outbox`, + "totalItems": eventCount, + }); + }, +};