summaryrefslogtreecommitdiff
path: root/src/remote/activitypub/kernel
diff options
context:
space:
mode:
authorMeiMei <30769358+mei23@users.noreply.github.com>2019-03-07 21:19:32 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2019-03-07 21:19:32 +0900
commit7325d66c52365104b6b5d6343324a258470ad2a8 (patch)
tree2e34ad9e592d64ab1a672877b33d384bc67e3d90 /src/remote/activitypub/kernel
parentUpdate README.md [AUTOGEN] (#4441) (diff)
downloadsharkey-7325d66c52365104b6b5d6343324a258470ad2a8.tar.gz
sharkey-7325d66c52365104b6b5d6343324a258470ad2a8.tar.bz2
sharkey-7325d66c52365104b6b5d6343324a258470ad2a8.zip
Implement Update Question (#4435)
* Update remote votes count * save updatedAt * deliver Update * use renderNote * use id * fix typeof
Diffstat (limited to 'src/remote/activitypub/kernel')
-rw-r--r--src/remote/activitypub/kernel/index.ts5
-rw-r--r--src/remote/activitypub/kernel/update/index.ts28
2 files changed, 33 insertions, 0 deletions
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<void> => {
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<void> => {
+ 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;
+ }
+};