summaryrefslogtreecommitdiff
path: root/src/remote/activitypub/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'src/remote/activitypub/kernel')
-rw-r--r--src/remote/activitypub/kernel/accept/index.ts14
-rw-r--r--src/remote/activitypub/kernel/create/index.ts6
-rw-r--r--src/remote/activitypub/kernel/reject/index.ts14
-rw-r--r--src/remote/activitypub/kernel/undo/announce.ts5
-rw-r--r--src/remote/activitypub/kernel/undo/index.ts26
-rw-r--r--src/remote/activitypub/kernel/update/index.ts8
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)}`;
}
};