From 0e4a111f81cceed275d9bec2695f6e401fb654d8 Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 12 Nov 2021 02:02:25 +0900 Subject: refactoring Resolve #7779 --- src/remote/activitypub/kernel/undo/announce.ts | 17 ----------- src/remote/activitypub/kernel/undo/block.ts | 20 ------------- src/remote/activitypub/kernel/undo/follow.ts | 41 -------------------------- src/remote/activitypub/kernel/undo/index.ts | 34 --------------------- src/remote/activitypub/kernel/undo/like.ts | 21 ------------- 5 files changed, 133 deletions(-) delete mode 100644 src/remote/activitypub/kernel/undo/announce.ts delete mode 100644 src/remote/activitypub/kernel/undo/block.ts delete mode 100644 src/remote/activitypub/kernel/undo/follow.ts delete mode 100644 src/remote/activitypub/kernel/undo/index.ts delete mode 100644 src/remote/activitypub/kernel/undo/like.ts (limited to 'src/remote/activitypub/kernel/undo') diff --git a/src/remote/activitypub/kernel/undo/announce.ts b/src/remote/activitypub/kernel/undo/announce.ts deleted file mode 100644 index 7bb9d7fcad..0000000000 --- a/src/remote/activitypub/kernel/undo/announce.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { Notes } from '@/models/index'; -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 => { - const uri = getApId(activity); - - const note = await Notes.findOne({ - uri - }); - - if (!note) return 'skip: no such Announce'; - - await deleteNote(actor, note); - return 'ok: deleted'; -}; diff --git a/src/remote/activitypub/kernel/undo/block.ts b/src/remote/activitypub/kernel/undo/block.ts deleted file mode 100644 index 61940486be..0000000000 --- a/src/remote/activitypub/kernel/undo/block.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { IBlock } from '../../type'; -import unblock from '@/services/blocking/delete'; -import { IRemoteUser } from '@/models/entities/user'; -import DbResolver from '../../db-resolver'; - -export default async (actor: IRemoteUser, activity: IBlock): Promise => { - const dbResolver = new DbResolver(); - const blockee = await dbResolver.getUserFromApId(activity.object); - - if (blockee == null) { - return `skip: blockee not found`; - } - - if (blockee.host != null) { - return `skip: ブロック解除しようとしているユーザーはローカルユーザーではありません`; - } - - await unblock(actor, blockee); - return `ok`; -}; diff --git a/src/remote/activitypub/kernel/undo/follow.ts b/src/remote/activitypub/kernel/undo/follow.ts deleted file mode 100644 index d85c7e4a71..0000000000 --- a/src/remote/activitypub/kernel/undo/follow.ts +++ /dev/null @@ -1,41 +0,0 @@ -import unfollow from '@/services/following/delete'; -import cancelRequest from '@/services/following/requests/cancel'; -import { IFollow } from '../../type'; -import { IRemoteUser } from '@/models/entities/user'; -import { FollowRequests, Followings } from '@/models/index'; -import DbResolver from '../../db-resolver'; - -export default async (actor: IRemoteUser, activity: IFollow): Promise => { - const dbResolver = new DbResolver(); - - const followee = await dbResolver.getUserFromApId(activity.object); - if (followee == null) { - return `skip: followee not found`; - } - - if (followee.host != null) { - return `skip: フォロー解除しようとしているユーザーはローカルユーザーではありません`; - } - - const req = await FollowRequests.findOne({ - followerId: actor.id, - followeeId: followee.id - }); - - const following = await Followings.findOne({ - followerId: actor.id, - followeeId: followee.id - }); - - if (req) { - await cancelRequest(followee, actor); - return `ok: follow request canceled`; - } - - if (following) { - await unfollow(actor, followee); - return `ok: unfollowed`; - } - - return `skip: リクエストもフォローもされていない`; -}; diff --git a/src/remote/activitypub/kernel/undo/index.ts b/src/remote/activitypub/kernel/undo/index.ts deleted file mode 100644 index 14b1add152..0000000000 --- a/src/remote/activitypub/kernel/undo/index.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { IRemoteUser } from '@/models/entities/user'; -import { IUndo, isFollow, isBlock, isLike, isAnnounce, getApType } from '../../type'; -import unfollow from './follow'; -import unblock from './block'; -import undoLike from './like'; -import { undoAnnounce } from './announce'; -import Resolver from '../../resolver'; -import { apLogger } from '../../logger'; - -const logger = apLogger; - -export default async (actor: IRemoteUser, activity: IUndo): Promise => { - if ('actor' in activity && actor.uri !== activity.actor) { - throw new Error('invalid actor'); - } - - const uri = activity.id || activity; - - logger.info(`Undo: ${uri}`); - - const resolver = new Resolver(); - - const object = await resolver.resolve(activity.object).catch(e => { - logger.error(`Resolution failed: ${e}`); - throw e; - }); - - 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/undo/like.ts b/src/remote/activitypub/kernel/undo/like.ts deleted file mode 100644 index 107d3053e3..0000000000 --- a/src/remote/activitypub/kernel/undo/like.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { IRemoteUser } from '@/models/entities/user'; -import { ILike, getApId } from '../../type'; -import deleteReaction from '@/services/note/reaction/delete'; -import { fetchNote } from '../../models/note'; - -/** - * Process Undo.Like activity - */ -export default async (actor: IRemoteUser, activity: ILike) => { - const targetUri = getApId(activity.object); - - const note = await fetchNote(targetUri); - if (!note) return `skip: target note not found ${targetUri}`; - - await deleteReaction(actor, note).catch(e => { - if (e.id === '60527ec9-b4cb-4a88-a6bd-32d3ad26817d') return; - throw e; - }); - - return `ok`; -}; -- cgit v1.2.3-freya