summaryrefslogtreecommitdiff
path: root/src/common/remote/activitypub/act
diff options
context:
space:
mode:
authorAkihiko Odaki <nekomanma@pixiv.co.jp>2018-03-31 19:55:00 +0900
committerAkihiko Odaki <nekomanma@pixiv.co.jp>2018-03-31 20:33:14 +0900
commit68a9aac9573969311dd00a44536c3ee4c05b883d (patch)
tree7d6c502c1e2c61eb3327f678f766f23bda10c1e7 /src/common/remote/activitypub/act
parentStore texts as HTML (diff)
downloadsharkey-68a9aac9573969311dd00a44536c3ee4c05b883d.tar.gz
sharkey-68a9aac9573969311dd00a44536c3ee4c05b883d.tar.bz2
sharkey-68a9aac9573969311dd00a44536c3ee4c05b883d.zip
Implement remote status retrieval
Diffstat (limited to 'src/common/remote/activitypub/act')
-rw-r--r--src/common/remote/activitypub/act/create.ts9
-rw-r--r--src/common/remote/activitypub/act/index.ts22
2 files changed, 31 insertions, 0 deletions
diff --git a/src/common/remote/activitypub/act/create.ts b/src/common/remote/activitypub/act/create.ts
new file mode 100644
index 0000000000..6c62f7ab9e
--- /dev/null
+++ b/src/common/remote/activitypub/act/create.ts
@@ -0,0 +1,9 @@
+import create from '../create';
+
+export default (resolver, actor, activity) => {
+ if ('actor' in activity && actor.account.uri !== activity.actor) {
+ throw new Error;
+ }
+
+ return create(resolver, actor, activity.object);
+};
diff --git a/src/common/remote/activitypub/act/index.ts b/src/common/remote/activitypub/act/index.ts
new file mode 100644
index 0000000000..0f4084a61e
--- /dev/null
+++ b/src/common/remote/activitypub/act/index.ts
@@ -0,0 +1,22 @@
+import create from './create';
+import createObject from '../create';
+import Resolver from '../resolver';
+
+export default (actor, value) => {
+ return (new Resolver).resolve(value).then(resolved => Promise.all(resolved.map(async asyncResult => {
+ const { resolver, object } = await asyncResult;
+ const created = await (await createObject(resolver, actor, [object]))[0];
+
+ if (created !== null) {
+ return created;
+ }
+
+ switch (object.type) {
+ case 'Create':
+ return create(resolver, actor, object);
+
+ default:
+ return null;
+ }
+ })));
+}