From 536277122d6c8f951114df6f7867095639343991 Mon Sep 17 00:00:00 2001 From: syuilo Date: Mon, 9 Apr 2018 05:02:52 +0900 Subject: wip --- src/remote/activitypub/kernel/create/image.ts | 6 ++++ src/remote/activitypub/kernel/create/index.ts | 44 +++++++++++++++++++++++++++ src/remote/activitypub/kernel/create/note.ts | 13 ++++++++ 3 files changed, 63 insertions(+) create mode 100644 src/remote/activitypub/kernel/create/image.ts create mode 100644 src/remote/activitypub/kernel/create/index.ts create mode 100644 src/remote/activitypub/kernel/create/note.ts (limited to 'src/remote/activitypub/kernel/create') diff --git a/src/remote/activitypub/kernel/create/image.ts b/src/remote/activitypub/kernel/create/image.ts new file mode 100644 index 0000000000..ea36545f0c --- /dev/null +++ b/src/remote/activitypub/kernel/create/image.ts @@ -0,0 +1,6 @@ +import { IRemoteUser } from '../../../../models/user'; +import { createImage } from '../../objects/image'; + +export default async function(actor: IRemoteUser, image): Promise { + await createImage(image.url, actor); +} diff --git a/src/remote/activitypub/kernel/create/index.ts b/src/remote/activitypub/kernel/create/index.ts new file mode 100644 index 0000000000..7cb9b08449 --- /dev/null +++ b/src/remote/activitypub/kernel/create/index.ts @@ -0,0 +1,44 @@ +import * as debug from 'debug'; + +import Resolver from '../../resolver'; +import { IRemoteUser } from '../../../../models/user'; +import createNote from './note'; +import createImage from './image'; +import { ICreate } from '../../type'; + +const log = debug('misskey:activitypub'); + +export default async (actor: IRemoteUser, activity: ICreate): Promise => { + if ('actor' in activity && actor.uri !== activity.actor) { + throw new Error('invalid actor'); + } + + const uri = activity.id || activity; + + log(`Create: ${uri}`); + + const resolver = new Resolver(); + + let object; + + try { + object = await resolver.resolve(activity.object); + } catch (e) { + log(`Resolution failed: ${e}`); + throw e; + } + + switch (object.type) { + case 'Image': + createImage(actor, object); + break; + + case 'Note': + createNote(resolver, actor, object); + break; + + default: + console.warn(`Unknown type: ${object.type}`); + break; + } +}; diff --git a/src/remote/activitypub/kernel/create/note.ts b/src/remote/activitypub/kernel/create/note.ts new file mode 100644 index 0000000000..530cf6483f --- /dev/null +++ b/src/remote/activitypub/kernel/create/note.ts @@ -0,0 +1,13 @@ +import Resolver from '../../resolver'; +import { IRemoteUser } from '../../../../models/user'; +import { createNote, fetchNote } from '../../objects/note'; + +/** + * 投稿作成アクティビティを捌きます + */ +export default async function(resolver: Resolver, actor: IRemoteUser, note, silent = false): Promise { + const exist = await fetchNote(note); + if (exist == null) { + await createNote(note); + } +} -- cgit v1.2.3-freya From cf5b6791177767816708e9e96bbd91d1c8e2a8bb Mon Sep 17 00:00:00 2001 From: syuilo Date: Mon, 9 Apr 2018 05:23:35 +0900 Subject: :v: --- src/remote/activitypub/kernel/create/index.ts | 4 ---- 1 file changed, 4 deletions(-) (limited to 'src/remote/activitypub/kernel/create') diff --git a/src/remote/activitypub/kernel/create/index.ts b/src/remote/activitypub/kernel/create/index.ts index 7cb9b08449..e11bcac811 100644 --- a/src/remote/activitypub/kernel/create/index.ts +++ b/src/remote/activitypub/kernel/create/index.ts @@ -9,10 +9,6 @@ import { ICreate } from '../../type'; const log = debug('misskey:activitypub'); export default async (actor: IRemoteUser, activity: ICreate): Promise => { - if ('actor' in activity && actor.uri !== activity.actor) { - throw new Error('invalid actor'); - } - const uri = activity.id || activity; log(`Create: ${uri}`); -- cgit v1.2.3-freya