mirror of
https://gitlab.com/soapbox-pub/ditto.git
synced 2025-12-06 11:29:46 +00:00
add /api/admin/ditto/lookup route
This commit is contained in:
parent
155ca77074
commit
cb582d7d9d
2 changed files with 34 additions and 0 deletions
|
|
@ -42,6 +42,7 @@ import { bookmarksController } from '@/controllers/api/bookmarks.ts';
|
|||
import {
|
||||
adminRelaysController,
|
||||
adminSetRelaysController,
|
||||
lookupProfileController,
|
||||
nameRequestController,
|
||||
nameRequestsController,
|
||||
} 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.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.get('/api/v1/ditto/names', requireSigner, nameRequestsController);
|
||||
|
|
|
|||
|
|
@ -33,6 +33,38 @@ export const adminRelaysController: AppController = async (c) => {
|
|||
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) => {
|
||||
const store = await Storages.db();
|
||||
const relays = relaySchema.array().parse(await c.req.json());
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue