summaryrefslogtreecommitdiff
path: root/src/server/activitypub
diff options
context:
space:
mode:
authorMeiMei <30769358+mei23@users.noreply.github.com>2018-09-18 13:08:27 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2018-09-18 13:08:27 +0900
commit11496d887e89ceccd64035f9e1836c5d415f4349 (patch)
tree6c3d3b542a893127b5b0afe1f05627b703838915 /src/server/activitypub
parent8.50.0 (diff)
downloadmisskey-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.ts38
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);
+};