8829500bc89b7abaca60848f0102e5de205b773f
[oweals/peertube.git] / server / controllers / webfinger.ts
1 import * as express from 'express'
2 import { asyncMiddleware } from '../middlewares'
3 import { webfingerValidator } from '../middlewares/validators'
4 import { AccountModel } from '../models/account/account'
5
6 const webfingerRouter = express.Router()
7
8 webfingerRouter.get('/.well-known/webfinger',
9   asyncMiddleware(webfingerValidator),
10   webfingerController
11 )
12
13 // ---------------------------------------------------------------------------
14
15 export {
16   webfingerRouter
17 }
18
19 // ---------------------------------------------------------------------------
20
21 function webfingerController (req: express.Request, res: express.Response, next: express.NextFunction) {
22   const account = res.locals.account as AccountModel
23
24   const json = {
25     subject: req.query.resource,
26     aliases: [ account.Actor.url ],
27     links: [
28       {
29         rel: 'self',
30         type: 'application/activity+json',
31         href: account.Actor.url
32       }
33     ]
34   }
35
36   return res.json(json).end()
37 }