diff options
| author | Akihiko Odaki <nekomanma@pixiv.co.jp> | 2018-04-01 15:58:49 +0900 |
|---|---|---|
| committer | Akihiko Odaki <nekomanma@pixiv.co.jp> | 2018-04-01 15:58:49 +0900 |
| commit | fabf233478ad79488cd95b1fcfb511a0c5d348bb (patch) | |
| tree | 81dc6c331736839875e5cdaccf87fbddf24c24a9 /src/server/activitypub.ts | |
| parent | Implement WebFinger (diff) | |
| download | sharkey-fabf233478ad79488cd95b1fcfb511a0c5d348bb.tar.gz sharkey-fabf233478ad79488cd95b1fcfb511a0c5d348bb.tar.bz2 sharkey-fabf233478ad79488cd95b1fcfb511a0c5d348bb.zip | |
Implement inbox
Diffstat (limited to 'src/server/activitypub.ts')
| -rw-r--r-- | src/server/activitypub.ts | 62 |
1 files changed, 0 insertions, 62 deletions
diff --git a/src/server/activitypub.ts b/src/server/activitypub.ts deleted file mode 100644 index a48a8e643b..0000000000 --- a/src/server/activitypub.ts +++ /dev/null @@ -1,62 +0,0 @@ -import * as express from 'express'; - -import config from '../conf'; -import { extractPublic } from '../crypto_key'; -import parseAcct from '../common/user/parse-acct'; -import User, { ILocalAccount } from '../models/user'; - -const app = express(); -app.disable('x-powered-by'); - -app.get('/@:user', async (req, res, next) => { - const accepted = req.accepts(['html', 'application/activity+json', 'application/ld+json']); - if (!['application/activity+json', 'application/ld+json'].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); - } - - const id = `${config.url}/@${user.username}`; - - if (username !== user.username) { - return res.redirect(id); - } - - res.json({ - '@context': [ - 'https://www.w3.org/ns/activitystreams', - 'https://w3id.org/security/v1' - ], - type: 'Person', - id, - preferredUsername: user.username, - name: user.name, - summary: user.description, - icon: user.avatarId && { - type: 'Image', - url: `${config.drive_url}/${user.avatarId}` - }, - image: user.bannerId && { - type: 'Image', - url: `${config.drive_url}/${user.bannerId}` - }, - publicKey: { - type: 'Key', - owner: id, - publicKeyPem: extractPublic((user.account as ILocalAccount).keypair) - } - }); -}); - -export default app; |