add /api/admin/ditto/lookup route

This commit is contained in:
Siddharth Singh 2024-07-07 03:34:50 +05:30
parent 155ca77074
commit cb582d7d9d
No known key found for this signature in database
2 changed files with 34 additions and 0 deletions

View file

@ -42,6 +42,7 @@ import { bookmarksController } from '@/controllers/api/bookmarks.ts';
import { import {
adminRelaysController, adminRelaysController,
adminSetRelaysController, adminSetRelaysController,
lookupProfileController,
nameRequestController, nameRequestController,
nameRequestsController, nameRequestsController,
} from '@/controllers/api/ditto.ts'; } from '@/controllers/api/ditto.ts';
@ -266,6 +267,7 @@ app.delete('/api/v1/pleroma/admin/statuses/:id', requireRole('admin'), pleromaAd
app.get('/api/v1/admin/ditto/relays', requireRole('admin'), adminRelaysController); app.get('/api/v1/admin/ditto/relays', requireRole('admin'), adminRelaysController);
app.put('/api/v1/admin/ditto/relays', requireRole('admin'), adminSetRelaysController); app.put('/api/v1/admin/ditto/relays', requireRole('admin'), adminSetRelaysController);
app.get('/api/v1/admin/ditto/lookup/:pubkey{[0-9a-f]{64}}', requireRole('admin'), lookupProfileController);
app.post('/api/v1/ditto/names', requireSigner, nameRequestController); app.post('/api/v1/ditto/names', requireSigner, nameRequestController);
app.get('/api/v1/ditto/names', requireSigner, nameRequestsController); app.get('/api/v1/ditto/names', requireSigner, nameRequestsController);

View file

@ -33,6 +33,38 @@ export const adminRelaysController: AppController = async (c) => {
return c.json(renderRelays(event)); return c.json(renderRelays(event));
}; };
export const lookupProfileController: AppController = async (c) => {
const store = await Storages.client();
const db = await Storages.db();
const id = c.req.param('pubkey');
const response = {
got_kind_0: false,
got_kind_3: false,
notes_count: 0,
};
const events = await store.query([{ authors: [id], kinds: [0, 3], limit: 2 }]);
if (events.some((event) => event.kind === 0)) {
response.got_kind_0 = true;
response.notes_count -= 1;
}
if (events.some((event) => event.kind === 3)) {
response.got_kind_3 = true;
response.notes_count -= 1;
}
if (c.req.query('with_notes')) {
const notes = await store.query([{ authors: [id], kinds: [1], limit: 100 }]);
events.push(...notes);
}
await Promise.all(events.map(async (event) => await db.event(event)));
response.notes_count += events.length;
return c.json(response);
};
export const adminSetRelaysController: AppController = async (c) => { export const adminSetRelaysController: AppController = async (c) => {
const store = await Storages.db(); const store = await Storages.db();
const relays = relaySchema.array().parse(await c.req.json()); const relays = relaySchema.array().parse(await c.req.json());