diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2018-04-09 05:04:06 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-04-09 05:04:06 +0900 |
| commit | 49ad86498ecf0da61a3e36998150250c526fdd0d (patch) | |
| tree | 126de4e02c83b8cb126e82563959190f58f1fdfa /src/remote/activitypub/kernel/create | |
| parent | Merge pull request #1422 from unarist/fix/username-regex (diff) | |
| parent | wip (diff) | |
| download | sharkey-49ad86498ecf0da61a3e36998150250c526fdd0d.tar.gz sharkey-49ad86498ecf0da61a3e36998150250c526fdd0d.tar.bz2 sharkey-49ad86498ecf0da61a3e36998150250c526fdd0d.zip | |
Merge pull request #1423 from syuilo/hoge
Refactor
Diffstat (limited to 'src/remote/activitypub/kernel/create')
| -rw-r--r-- | src/remote/activitypub/kernel/create/image.ts | 6 | ||||
| -rw-r--r-- | src/remote/activitypub/kernel/create/index.ts | 44 | ||||
| -rw-r--r-- | src/remote/activitypub/kernel/create/note.ts | 13 |
3 files changed, 63 insertions, 0 deletions
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<void> { + 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<void> => { + 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<void> { + const exist = await fetchNote(note); + if (exist == null) { + await createNote(note); + } +} |