[READ ONLY MIRROR] Spark Social AppView Server github.com/sprksocial/server
atproto deno hono lexicon
5
fork

Configure Feed

Select the types of activity you want to include in your feed.

resolveHandle

+31 -2
+4 -1
services/appview/src/index.ts
··· 26 26 import { createGetRecordRouter } from './routes/com/atproto/repo/getRecord.js' 27 27 import { createGetAccountInfosRouter } from './routes/com/atproto/admin/getAccountInfos.js' 28 28 import { createGetSubjectStatusRouter } from './routes/com/atproto/admin/getSubjectStatus.js' 29 + import { createResolveHandleRouter } from './routes/com/atproto/identity/resolveHandle.js' 29 30 import wellKnownRouter from './well-known.js' 30 31 import { TakedownService } from './services/takedown.js' 31 32 import { IndexingService } from './services/indexing.js' ··· 114 115 const getRecordRouter = createGetRecordRouter(ctx) 115 116 const getAccountInfosRouter = createGetAccountInfosRouter(ctx) 116 117 const getSubjectStatusRouter = createGetSubjectStatusRouter(ctx) 117 - 118 + const resolveHandleRouter = createResolveHandleRouter(ctx) 119 + 118 120 app.route('/', getPostsRouter) 119 121 app.route('/', getPostThreadRouter) 120 122 app.route('/', getProfileRouter) ··· 127 129 app.route('/', getRecordRouter) 128 130 app.route('/', getAccountInfosRouter) 129 131 app.route('/', getSubjectStatusRouter) 132 + app.route('/', resolveHandleRouter) 130 133 app.route('/', wellKnownRouter()) 131 134 132 135 // Root route
+1 -1
services/appview/src/routes/com/atproto/admin/getSubjectStatus.ts
··· 5 5 export const createGetSubjectStatusRouter = (ctx: AppContext) => { 6 6 const router = new Hono() 7 7 8 - router.get('/xrpc/com.atproto.admin.getSubjectStatus', (c, next) => optionalAuthMiddleware(c, next), async (c) => { 8 + router.get('/xrpc/com.atproto.admin.getSubjectStatus', (c, next) => authMiddleware(c, next, true), async (c) => { 9 9 const did = c.req.query('did') 10 10 const uri = c.req.query('uri') 11 11 const blob = c.req.query('blob')
+26
services/appview/src/routes/com/atproto/identity/resolveHandle.ts
··· 1 + import * as ident from '@atproto/syntax' 2 + import { InvalidRequestError } from '@atproto/xrpc-server' 3 + import { Server } from '../../../../lexicon' 4 + import { AppContext } from '../../../..' 5 + import { Hono } from 'hono' 6 + 7 + export const createResolveHandleRouter = (ctx: AppContext) => { 8 + const router = new Hono() 9 + 10 + router.get('/xrpc/com.atproto.identity.resolveHandle', async (c) => { 11 + if (!c.req.query('handle')) { 12 + throw new InvalidRequestError('Missing handle') 13 + } 14 + 15 + const handle = ident.normalizeHandle(c.req.query('handle')!) 16 + 17 + const actor = await ctx.db.models.Actor.findOne({ handle }) 18 + if (!actor) { 19 + throw new InvalidRequestError('Unable to resolve handle') 20 + } 21 + 22 + return c.json({ did: actor.did }) 23 + }) 24 + 25 + return router 26 + }