From 7325d66c52365104b6b5d6343324a258470ad2a8 Mon Sep 17 00:00:00 2001 From: MeiMei <30769358+mei23@users.noreply.github.com> Date: Thu, 7 Mar 2019 21:19:32 +0900 Subject: Implement Update Question (#4435) * Update remote votes count * save updatedAt * deliver Update * use renderNote * use id * fix typeof --- src/remote/activitypub/kernel/index.ts | 5 +++++ src/remote/activitypub/kernel/update/index.ts | 28 +++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 src/remote/activitypub/kernel/update/index.ts (limited to 'src/remote/activitypub/kernel') diff --git a/src/remote/activitypub/kernel/index.ts b/src/remote/activitypub/kernel/index.ts index 7cf9ba8334..4f7a5c91fd 100644 --- a/src/remote/activitypub/kernel/index.ts +++ b/src/remote/activitypub/kernel/index.ts @@ -2,6 +2,7 @@ import { Object } from '../type'; import { IRemoteUser } from '../../../models/user'; import create from './create'; import performDeleteActivity from './delete'; +import performUpdateActivity from './update'; import follow from './follow'; import undo from './undo'; import like from './like'; @@ -23,6 +24,10 @@ const self = async (actor: IRemoteUser, activity: Object): Promise => { await performDeleteActivity(actor, activity); break; + case 'Update': + await performUpdateActivity(actor, activity); + break; + case 'Follow': await follow(actor, activity); break; diff --git a/src/remote/activitypub/kernel/update/index.ts b/src/remote/activitypub/kernel/update/index.ts new file mode 100644 index 0000000000..49b730391a --- /dev/null +++ b/src/remote/activitypub/kernel/update/index.ts @@ -0,0 +1,28 @@ +import { IRemoteUser } from '../../../../models/user'; +import { IUpdate, IObject } from '../../type'; +import { apLogger } from '../../logger'; +import { updateQuestion } from '../../models/question'; + +/** + * Updateアクティビティを捌きます + */ +export default async (actor: IRemoteUser, activity: IUpdate): Promise => { + if ('actor' in activity && actor.uri !== activity.actor) { + throw new Error('invalid actor'); + } + + apLogger.debug('Update'); + + const object = activity.object as IObject; + + switch (object.type) { + case 'Question': + apLogger.debug('Question'); + await updateQuestion(object).catch(e => console.log(e)); + break; + + default: + apLogger.warn(`Unknown type: ${object.type}`); + break; + } +}; -- cgit v1.2.3-freya