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 {
|
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);
|
||||||
|
|
|
||||||
|
|
@ -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());
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue