summaryrefslogtreecommitdiff
path: root/src/server/activitypub
diff options
context:
space:
mode:
authorMeiMei <30769358+mei23@users.noreply.github.com>2018-09-08 05:24:55 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2018-09-08 05:24:55 +0900
commitef624977770c4d4b501a0e167804e69752c9ca44 (patch)
tree7827720490a0291fc5b4a78ff9d10dbc874eb523 /src/server/activitypub
parentAdd animation (diff)
downloadmisskey-ef624977770c4d4b501a0e167804e69752c9ca44.tar.gz
misskey-ef624977770c4d4b501a0e167804e69752c9ca44.tar.bz2
misskey-ef624977770c4d4b501a0e167804e69752c9ca44.zip
ActivityPub Outboxの修正とactivity idのURLを実装 (#2662)
* Fix Outbox structure * Implement activity endpoint * Use in instead of or * Use in, addition
Diffstat (limited to 'src/server/activitypub')
-rw-r--r--src/server/activitypub/outbox.ts31
1 files changed, 19 insertions, 12 deletions
diff --git a/src/server/activitypub/outbox.ts b/src/server/activitypub/outbox.ts
index a5e762eea8..9a4c881774 100644
--- a/src/server/activitypub/outbox.ts
+++ b/src/server/activitypub/outbox.ts
@@ -8,8 +8,10 @@ import renderOrderedCollection from '../../remote/activitypub/renderer/ordered-c
import renderOrderedCollectionPage from '../../remote/activitypub/renderer/ordered-collection-page';
import { setResponseType } from '../activitypub';
-import Note from '../../models/note';
+import Note, { INote } from '../../models/note';
import renderNote from '../../remote/activitypub/renderer/note';
+import renderCreate from '../../remote/activitypub/renderer/create';
+import renderAnnounce from '../../remote/activitypub/renderer/announce';
import { countIf } from '../../prelude/array';
export default async (ctx: Router.IRouterContext) => {
@@ -53,15 +55,7 @@ export default async (ctx: Router.IRouterContext) => {
const query = {
userId: user._id,
- $and: [{
- $or: [ { visibility: 'public' }, { visibility: 'home' } ]
- }, { // exclude renote, but include quote
- $or: [{
- text: { $ne: null }
- }, {
- fileIds: { $ne: [] }
- }]
- }]
+ visibility: { $in: ['public', 'home'] }
} as any;
if (sinceId) {
@@ -85,10 +79,10 @@ export default async (ctx: Router.IRouterContext) => {
if (sinceId) notes.reverse();
- const renderedNotes = await Promise.all(notes.map(note => renderNote(note, false)));
+ const activities = await Promise.all(notes.map(note => packActivity(note)));
const rendered = renderOrderedCollectionPage(
`${partOf}?page=true${sinceId ? `&since_id=${sinceId}` : ''}${untilId ? `&until_id=${untilId}` : ''}`,
- user.notesCount, renderedNotes, partOf,
+ user.notesCount, activities, partOf,
notes.length > 0 ? `${partOf}?page=true&since_id=${notes[0]._id}` : null,
notes.length > 0 ? `${partOf}?page=true&until_id=${notes[notes.length - 1]._id}` : null
);
@@ -105,3 +99,16 @@ export default async (ctx: Router.IRouterContext) => {
setResponseType(ctx);
}
};
+
+/**
+ * Pack Create<Note> or Announce Activity
+ * @param note Note
+ */
+export async function packActivity(note: INote): Promise<object> {
+ if (note.renoteId && note.text == null) {
+ const renote = await Note.findOne(note.renoteId);
+ return renderAnnounce(renote.uri ? renote.uri : `${config.url}/notes/${renote._id}`, note);
+ }
+
+ return renderCreate(await renderNote(note, false), note);
+}