diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2018-04-08 15:15:22 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2018-04-08 15:15:22 +0900 |
| commit | e63f884bc6ba89902e2efd20f1c6d8939f7c4270 (patch) | |
| tree | 3293c8bf97510be5eb86a2c5f4f119035a790c59 /src/server/activitypub | |
| parent | Merge pull request #1415 from syuilo/greenkeeper/html-minifier-3.5.14 (diff) | |
| download | sharkey-e63f884bc6ba89902e2efd20f1c6d8939f7c4270.tar.gz sharkey-e63f884bc6ba89902e2efd20f1c6d8939f7c4270.tar.bz2 sharkey-e63f884bc6ba89902e2efd20f1c6d8939f7c4270.zip | |
Use id in uri instead of username
Diffstat (limited to 'src/server/activitypub')
| -rw-r--r-- | src/server/activitypub/inbox.ts | 2 | ||||
| -rw-r--r-- | src/server/activitypub/outbox.ts | 14 | ||||
| -rw-r--r-- | src/server/activitypub/publickey.ts | 13 | ||||
| -rw-r--r-- | src/server/activitypub/user.ts | 23 | ||||
| -rw-r--r-- | src/server/activitypub/with-user.ts | 23 |
5 files changed, 24 insertions, 51 deletions
diff --git a/src/server/activitypub/inbox.ts b/src/server/activitypub/inbox.ts index 1b6cc0c00a..643d2945bd 100644 --- a/src/server/activitypub/inbox.ts +++ b/src/server/activitypub/inbox.ts @@ -5,7 +5,7 @@ import { createHttp } from '../../queue'; const app = express.Router(); -app.post('/@:user/inbox', bodyParser.json({ +app.post('/users/:user/inbox', bodyParser.json({ type() { return true; } diff --git a/src/server/activitypub/outbox.ts b/src/server/activitypub/outbox.ts index 4557871bc5..1c97c17a2e 100644 --- a/src/server/activitypub/outbox.ts +++ b/src/server/activitypub/outbox.ts @@ -4,23 +4,25 @@ import renderNote from '../../remote/activitypub/renderer/note'; import renderOrderedCollection from '../../remote/activitypub/renderer/ordered-collection'; import config from '../../config'; import Note from '../../models/note'; -import withUser from './with-user'; +import User from '../../models/user'; const app = express.Router(); -app.get('/@:user/outbox', withUser(username => { - return `${config.url}/@${username}/inbox`; -}, async (user, req, res) => { +app.get('/users/:user/outbox', async (req, res) => { + const userId = req.params.user; + + const user = await User.findOne({ _id: userId }); + const notes = await Note.find({ userId: user._id }, { limit: 20, sort: { _id: -1 } }); const renderedNotes = await Promise.all(notes.map(note => renderNote(note))); - const rendered = renderOrderedCollection(`${config.url}/@${user.username}/inbox`, user.notesCount, renderedNotes); + const rendered = renderOrderedCollection(`${config.url}/users/${userId}/inbox`, user.notesCount, renderedNotes); rendered['@context'] = context; res.json(rendered); -})); +}); export default app; diff --git a/src/server/activitypub/publickey.ts b/src/server/activitypub/publickey.ts index b48504927a..aa0c4271b8 100644 --- a/src/server/activitypub/publickey.ts +++ b/src/server/activitypub/publickey.ts @@ -1,18 +1,19 @@ import * as express from 'express'; import context from '../../remote/activitypub/renderer/context'; import render from '../../remote/activitypub/renderer/key'; -import config from '../../config'; -import withUser from './with-user'; +import User from '../../models/user'; const app = express.Router(); -app.get('/@:user/publickey', withUser(username => { - return `${config.url}/@${username}/publickey`; -}, (user, req, res) => { +app.get('/users/:user/publickey', async (req, res) => { + const userId = req.params.user; + + const user = await User.findOne({ _id: userId }); + const rendered = render(user); rendered['@context'] = context; res.json(rendered); -})); +}); export default app; diff --git a/src/server/activitypub/user.ts b/src/server/activitypub/user.ts index f054974510..9e98e92b6a 100644 --- a/src/server/activitypub/user.ts +++ b/src/server/activitypub/user.ts @@ -1,26 +1,19 @@ import * as express from 'express'; -import config from '../../config'; import context from '../../remote/activitypub/renderer/context'; import render from '../../remote/activitypub/renderer/person'; -import withUser from './with-user'; +import User from '../../models/user'; -const respond = withUser(username => `${config.url}/@${username}`, (user, req, res) => { - const rendered = render(user); - rendered['@context'] = context; +const app = express.Router(); - res.json(rendered); -}); +app.get('/users/:user', async (req, res) => { + const userId = req.params.user; -const app = express.Router(); + const user = await User.findOne({ _id: userId }); -app.get('/@:user', (req, res, next) => { - const accepted = req.accepts(['html', 'application/activity+json', 'application/ld+json']); + const rendered = render(user); + rendered['@context'] = context; - if ((['application/activity+json', 'application/ld+json'] as any[]).includes(accepted)) { - respond(req, res, next); - } else { - next(); - } + res.json(rendered); }); export default app; diff --git a/src/server/activitypub/with-user.ts b/src/server/activitypub/with-user.ts deleted file mode 100644 index bdbbefb429..0000000000 --- a/src/server/activitypub/with-user.ts +++ /dev/null @@ -1,23 +0,0 @@ -import parseAcct from '../../acct/parse'; -import User from '../../models/user'; - -export default (redirect, respond) => async (req, res, 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(redirect(user.username)); - } - - return respond(user, req, res, next); -}; |