diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2018-04-02 04:15:27 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2018-04-02 04:15:27 +0900 |
| commit | cd2542e0fd8578f6e41114ffebbda1f16f7d04ce (patch) | |
| tree | c339b7808fc2a3d72ae30cb86ddb7b9c21852652 /src/remote/activitypub/act | |
| parent | Refactor (diff) | |
| download | misskey-cd2542e0fd8578f6e41114ffebbda1f16f7d04ce.tar.gz misskey-cd2542e0fd8578f6e41114ffebbda1f16f7d04ce.tar.bz2 misskey-cd2542e0fd8578f6e41114ffebbda1f16f7d04ce.zip | |
Refactor
Diffstat (limited to 'src/remote/activitypub/act')
| -rw-r--r-- | src/remote/activitypub/act/create.ts | 9 | ||||
| -rw-r--r-- | src/remote/activitypub/act/index.ts | 22 |
2 files changed, 31 insertions, 0 deletions
diff --git a/src/remote/activitypub/act/create.ts b/src/remote/activitypub/act/create.ts new file mode 100644 index 0000000000..9eb74800ea --- /dev/null +++ b/src/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/remote/activitypub/act/index.ts b/src/remote/activitypub/act/index.ts new file mode 100644 index 0000000000..a76983638f --- /dev/null +++ b/src/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 promisedResult => { + const { resolver, object } = await promisedResult; + 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; + } + }))); +}; |