diff options
| author | MeiMei <30769358+mei23@users.noreply.github.com> | 2018-09-18 13:08:27 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2018-09-18 13:08:27 +0900 |
| commit | 11496d887e89ceccd64035f9e1836c5d415f4349 (patch) | |
| tree | 6c3d3b542a893127b5b0afe1f05627b703838915 /src/server/activitypub | |
| parent | 8.50.0 (diff) | |
| download | misskey-11496d887e89ceccd64035f9e1836c5d415f4349.tar.gz misskey-11496d887e89ceccd64035f9e1836c5d415f4349.tar.bz2 misskey-11496d887e89ceccd64035f9e1836c5d415f4349.zip | |
Publish pinned notes (#2731)
Diffstat (limited to 'src/server/activitypub')
| -rw-r--r-- | src/server/activitypub/featured.ts | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/server/activitypub/featured.ts b/src/server/activitypub/featured.ts new file mode 100644 index 0000000000..93c3700206 --- /dev/null +++ b/src/server/activitypub/featured.ts @@ -0,0 +1,38 @@ +import * as mongo from 'mongodb'; +import * as Router from 'koa-router'; +import config from '../../config'; +import User from '../../models/user'; +import pack from '../../remote/activitypub/renderer'; +import renderOrderedCollection from '../../remote/activitypub/renderer/ordered-collection'; +import { setResponseType } from '../activitypub'; +import Note from '../../models/note'; +import renderNote from '../../remote/activitypub/renderer/note'; + +export default async (ctx: Router.IRouterContext) => { + const userId = new mongo.ObjectID(ctx.params.user); + + // Verify user + const user = await User.findOne({ + _id: userId, + host: null + }); + + if (user === null) { + ctx.status = 404; + return; + } + + const pinnedNoteIds = user.pinnedNoteIds || []; + + const pinnedNotes = await Promise.all(pinnedNoteIds.map(id => Note.findOne({ _id: id }))); + + const renderedNotes = await Promise.all(pinnedNotes.map(note => renderNote(note))); + + const rendered = renderOrderedCollection( + `${config.url}/users/${userId}/collections/featured`, + renderedNotes.length, null, null, renderedNotes + ); + + ctx.body = pack(rendered); + setResponseType(ctx); +}; |