From cba73d6bc1eeb44ad2beac2566812daa9ec32751 Mon Sep 17 00:00:00 2001 From: Akihiko Odaki Date: Sun, 1 Apr 2018 20:07:04 +0900 Subject: Implement account public key endpoint --- src/server/activitypub/user.ts | 39 +++++++++++++-------------------------- 1 file changed, 13 insertions(+), 26 deletions(-) (limited to 'src/server/activitypub/user.ts') diff --git a/src/server/activitypub/user.ts b/src/server/activitypub/user.ts index d43a9793d4..8e8deca4ae 100644 --- a/src/server/activitypub/user.ts +++ b/src/server/activitypub/user.ts @@ -2,39 +2,26 @@ import * as express from 'express'; import config from '../../conf'; import context from '../../common/remote/activitypub/renderer/context'; import render from '../../common/remote/activitypub/renderer/person'; -import parseAcct from '../../common/user/parse-acct'; -import User from '../../models/user'; +import withUser from './with-user'; + +const respond = withUser(username => `${config.url}/@${username}`, (user, req, res) => { + const rendered = render(user); + rendered['@context'] = context; + + res.json(rendered); +}); const app = express(); app.disable('x-powered-by'); -app.get('/@:user', async (req, res, next) => { +app.get('/@:user', (req, res, next) => { const accepted = req.accepts(['html', 'application/activity+json', 'application/ld+json']); - if (!(['application/activity+json', 'application/ld+json'] as Array).includes(accepted)) { - return next(); - } - - const { username, host } = parseAcct(req.params.user); - if (host !== null) { - return res.sendStatus(422); - } - - const user = await User.findOne({ - usernameLower: username.toLowerCase(), - host: null - }); - if (user === null) { - return res.sendStatus(404); - } - if (username !== user.username) { - return res.redirect(`${config.url}/@${user.username}`); + if ((['application/activity+json', 'application/ld+json'] as Array).includes(accepted)) { + respond(req, res, next); + } else { + next(); } - - const rendered = render(user); - rendered['@context'] = context; - - res.json(rendered); }); export default app; -- cgit v1.3.1-freya