From d84e593e53dfe10744aed34489f2bcf528a374c9 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Sat, 29 Apr 2023 17:26:56 -0500 Subject: [PATCH] Add GET /api/v1/statuses/:id --- src/api/statuses.ts | 17 +++++++++++++++-- src/app.ts | 3 ++- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/api/statuses.ts b/src/api/statuses.ts index d472fd3..38c35b5 100644 --- a/src/api/statuses.ts +++ b/src/api/statuses.ts @@ -1,6 +1,7 @@ -import { type AppContext } from '@/app.ts'; +import { type AppContext, AppController } from '@/app.ts'; import { validator, z } from '@/deps.ts'; import { type Event } from '@/event.ts'; +import { getEvent } from '../client.ts'; import publish from '../publisher.ts'; import { toStatus } from '../transmute.ts'; @@ -9,6 +10,18 @@ const createStatusSchema = z.object({ status: z.string(), }); +const statusController: AppController = async (c) => { + const id = c.req.param('id'); + + const event = await getEvent(id); + + if (event && event.kind === 1) { + return c.json(await toStatus(event as Event<1>)); + } + + return c.json({ error: 'Event not found.' }, 404); +}; + const createStatusController = validator('json', async (value, c: AppContext) => { const pubkey = c.get('pubkey')!; const seckey = c.get('seckey'); @@ -33,4 +46,4 @@ const createStatusController = validator('json', async (value, c: AppContext) => } }); -export { createStatusController }; +export { createStatusController, statusController }; diff --git a/src/app.ts b/src/app.ts index 8d4b0bd..39faf4f 100644 --- a/src/app.ts +++ b/src/app.ts @@ -11,7 +11,7 @@ import { emptyArrayController, emptyObjectController } from './api/fallback.ts'; import homeController from './api/home.ts'; import instanceController from './api/instance.ts'; import { createTokenController } from './api/oauth.ts'; -import { createStatusController } from './api/statuses.ts'; +import { createStatusController, statusController } from './api/statuses.ts'; import { requireAuth, setAuth } from './middleware/auth.ts'; interface AppEnv extends HonoEnv { @@ -42,6 +42,7 @@ app.get('/api/v1/accounts/search', accountSearchController); app.get('/api/v1/accounts/lookup', accountLookupController); app.get('/api/v1/accounts/:pubkey{[0-9a-f]{64}}', accountController); +app.get('/api/v1/statuses/:id{[0-9a-f]{64}}', statusController); app.post('/api/v1/statuses', requireAuth, createStatusController); app.get('/api/v1/timelines/home', requireAuth, homeController);