diff options
| author | MeiMei <30769358+mei23@users.noreply.github.com> | 2021-05-31 13:04:13 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-05-31 13:04:13 +0900 |
| commit | caf40e40fbd444c050d8d3cc60f4dd2898950900 (patch) | |
| tree | 480f907740d8c9e86d9dea7bd8d9845f3e31b68e /src/remote/activitypub/kernel | |
| parent | New Crowdin updates (#7527) (diff) | |
| download | sharkey-caf40e40fbd444c050d8d3cc60f4dd2898950900.tar.gz sharkey-caf40e40fbd444c050d8d3cc60f4dd2898950900.tar.bz2 sharkey-caf40e40fbd444c050d8d3cc60f4dd2898950900.zip | |
Supports Array ActivityStreams type (#7536)
* Supports Array type
* Fix
* Fix Service to Note
* Update type.ts
Co-authored-by: syuilo <Syuilotan@yahoo.co.jp>
Diffstat (limited to 'src/remote/activitypub/kernel')
| -rw-r--r-- | src/remote/activitypub/kernel/accept/index.ts | 14 | ||||
| -rw-r--r-- | src/remote/activitypub/kernel/create/index.ts | 6 | ||||
| -rw-r--r-- | src/remote/activitypub/kernel/reject/index.ts | 14 | ||||
| -rw-r--r-- | src/remote/activitypub/kernel/undo/announce.ts | 5 | ||||
| -rw-r--r-- | src/remote/activitypub/kernel/undo/index.ts | 26 | ||||
| -rw-r--r-- | src/remote/activitypub/kernel/update/index.ts | 8 |
6 files changed, 26 insertions, 47 deletions
diff --git a/src/remote/activitypub/kernel/accept/index.ts b/src/remote/activitypub/kernel/accept/index.ts index 083e312a6f..79cdbb2ef7 100644 --- a/src/remote/activitypub/kernel/accept/index.ts +++ b/src/remote/activitypub/kernel/accept/index.ts @@ -1,12 +1,12 @@ import Resolver from '../../resolver'; import { IRemoteUser } from '../../../../models/entities/user'; import acceptFollow from './follow'; -import { IAccept, IFollow } from '../../type'; +import { IAccept, isFollow, getApType } from '../../type'; import { apLogger } from '../../logger'; const logger = apLogger; -export default async (actor: IRemoteUser, activity: IAccept): Promise<void> => { +export default async (actor: IRemoteUser, activity: IAccept): Promise<string> => { const uri = activity.id || activity; logger.info(`Accept: ${uri}`); @@ -18,13 +18,7 @@ export default async (actor: IRemoteUser, activity: IAccept): Promise<void> => { throw e; }); - switch (object.type) { - case 'Follow': - acceptFollow(actor, object as IFollow); - break; + if (isFollow(object)) return await acceptFollow(actor, object); - default: - logger.warn(`Unknown accept type: ${object.type}`); - break; - } + return `skip: Unknown Accept type: ${getApType(object)}`; }; diff --git a/src/remote/activitypub/kernel/create/index.ts b/src/remote/activitypub/kernel/create/index.ts index 108cfedf41..f1a3ebff43 100644 --- a/src/remote/activitypub/kernel/create/index.ts +++ b/src/remote/activitypub/kernel/create/index.ts @@ -1,7 +1,7 @@ import Resolver from '../../resolver'; import { IRemoteUser } from '../../../../models/entities/user'; import createNote from './note'; -import { ICreate, getApId, validPost } from '../../type'; +import { ICreate, getApId, isPost, getApType } from '../../type'; import { apLogger } from '../../logger'; import { toArray, concat, unique } from '../../../../prelude/array'; @@ -35,9 +35,9 @@ export default async (actor: IRemoteUser, activity: ICreate): Promise<void> => { throw e; }); - if (validPost.includes(object.type)) { + if (isPost(object)) { createNote(resolver, actor, object, false, activity); } else { - logger.warn(`Unknown type: ${object.type}`); + logger.warn(`Unknown type: ${getApType(object)}`); } }; diff --git a/src/remote/activitypub/kernel/reject/index.ts b/src/remote/activitypub/kernel/reject/index.ts index 96e9aadf5d..d7a80fce7b 100644 --- a/src/remote/activitypub/kernel/reject/index.ts +++ b/src/remote/activitypub/kernel/reject/index.ts @@ -1,12 +1,12 @@ import Resolver from '../../resolver'; import { IRemoteUser } from '../../../../models/entities/user'; import rejectFollow from './follow'; -import { IReject, IFollow } from '../../type'; +import { IReject, isFollow, getApType } from '../../type'; import { apLogger } from '../../logger'; const logger = apLogger; -export default async (actor: IRemoteUser, activity: IReject): Promise<void> => { +export default async (actor: IRemoteUser, activity: IReject): Promise<string> => { const uri = activity.id || activity; logger.info(`Reject: ${uri}`); @@ -18,13 +18,7 @@ export default async (actor: IRemoteUser, activity: IReject): Promise<void> => { throw e; }); - switch (object.type) { - case 'Follow': - rejectFollow(actor, object as IFollow); - break; + if (isFollow(object)) return await rejectFollow(actor, object); - default: - logger.warn(`Unknown reject type: ${object.type}`); - break; - } + return `skip: Unknown Reject type: ${getApType(object)}`; }; diff --git a/src/remote/activitypub/kernel/undo/announce.ts b/src/remote/activitypub/kernel/undo/announce.ts index 38ce5b6c59..e08fea188d 100644 --- a/src/remote/activitypub/kernel/undo/announce.ts +++ b/src/remote/activitypub/kernel/undo/announce.ts @@ -3,14 +3,15 @@ import { IRemoteUser } from '../../../../models/entities/user'; import { IAnnounce, getApId } from '../../type'; import deleteNote from '../../../../services/note/delete'; -export const undoAnnounce = async (actor: IRemoteUser, activity: IAnnounce): Promise<void> => { +export const undoAnnounce = async (actor: IRemoteUser, activity: IAnnounce): Promise<string> => { const uri = getApId(activity); const note = await Notes.findOne({ uri }); - if (!note) return; + if (!note) return 'skip: no such Announce'; await deleteNote(actor, note); + return 'ok: deleted'; }; diff --git a/src/remote/activitypub/kernel/undo/index.ts b/src/remote/activitypub/kernel/undo/index.ts index 93909352d9..0bab3c9666 100644 --- a/src/remote/activitypub/kernel/undo/index.ts +++ b/src/remote/activitypub/kernel/undo/index.ts @@ -1,5 +1,5 @@ import { IRemoteUser } from '../../../../models/entities/user'; -import { IUndo, IFollow, IBlock, ILike, IAnnounce } from '../../type'; +import { IUndo, isFollow, isBlock, isLike, isAnnounce, getApType } from '../../type'; import unfollow from './follow'; import unblock from './block'; import undoLike from './like'; @@ -9,7 +9,7 @@ import { apLogger } from '../../logger'; const logger = apLogger; -export default async (actor: IRemoteUser, activity: IUndo): Promise<void> => { +export default async (actor: IRemoteUser, activity: IUndo): Promise<string> => { if ('actor' in activity && actor.uri !== activity.actor) { throw new Error('invalid actor'); } @@ -25,20 +25,10 @@ export default async (actor: IRemoteUser, activity: IUndo): Promise<void> => { throw e; }); - switch (object.type) { - case 'Follow': - unfollow(actor, object as IFollow); - break; - case 'Block': - unblock(actor, object as IBlock); - break; - case 'Like': - case 'EmojiReaction': - case 'EmojiReact': - undoLike(actor, object as ILike); - break; - case 'Announce': - undoAnnounce(actor, object as IAnnounce); - break; - } + if (isFollow(object)) return await unfollow(actor, object); + if (isBlock(object)) return await unblock(actor, object); + if (isLike(object)) return await undoLike(actor, object); + if (isAnnounce(object)) return await undoAnnounce(actor, object); + + return `skip: unknown object type ${getApType(object)}`; }; diff --git a/src/remote/activitypub/kernel/update/index.ts b/src/remote/activitypub/kernel/update/index.ts index ea7e6a063e..6dd3e5f296 100644 --- a/src/remote/activitypub/kernel/update/index.ts +++ b/src/remote/activitypub/kernel/update/index.ts @@ -1,5 +1,5 @@ import { IRemoteUser } from '../../../../models/entities/user'; -import { IUpdate, validActor } from '../../type'; +import { getApType, IUpdate, isActor } from '../../type'; import { apLogger } from '../../logger'; import { updateQuestion } from '../../models/question'; import Resolver from '../../resolver'; @@ -22,13 +22,13 @@ export default async (actor: IRemoteUser, activity: IUpdate): Promise<string> => throw e; }); - if (validActor.includes(object.type)) { + if (isActor(object)) { await updatePerson(actor.uri!, resolver, object); return `ok: Person updated`; - } else if (object.type === 'Question') { + } else if (getApType(object) === 'Question') { await updateQuestion(object).catch(e => console.log(e)); return `ok: Question updated`; } else { - return `skip: Unknown type: ${object.type}`; + return `skip: Unknown type: ${getApType(object)}`; } }; |