diff options
Diffstat (limited to 'src/remote/activitypub/kernel/delete')
| -rw-r--r-- | src/remote/activitypub/kernel/delete/actor.ts | 26 | ||||
| -rw-r--r-- | src/remote/activitypub/kernel/delete/index.ts | 49 | ||||
| -rw-r--r-- | src/remote/activitypub/kernel/delete/note.ts | 41 |
3 files changed, 0 insertions, 116 deletions
diff --git a/src/remote/activitypub/kernel/delete/actor.ts b/src/remote/activitypub/kernel/delete/actor.ts deleted file mode 100644 index 502f8d5ab5..0000000000 --- a/src/remote/activitypub/kernel/delete/actor.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { apLogger } from '../../logger'; -import { createDeleteAccountJob } from '@/queue'; -import { IRemoteUser } from '@/models/entities/user'; -import { Users } from '@/models/index'; - -const logger = apLogger; - -export async function deleteActor(actor: IRemoteUser, uri: string): Promise<string> { - logger.info(`Deleting the Actor: ${uri}`); - - if (actor.uri !== uri) { - return `skip: delete actor ${actor.uri} !== ${uri}`; - } - - if (actor.isDeleted) { - logger.info(`skip: already deleted`); - } - - const job = await createDeleteAccountJob(actor); - - await Users.update(actor.id, { - isDeleted: true, - }); - - return `ok: queued ${job.name} ${job.id}`; -} diff --git a/src/remote/activitypub/kernel/delete/index.ts b/src/remote/activitypub/kernel/delete/index.ts deleted file mode 100644 index 86a452de76..0000000000 --- a/src/remote/activitypub/kernel/delete/index.ts +++ /dev/null @@ -1,49 +0,0 @@ -import deleteNote from './note'; -import { IRemoteUser } from '@/models/entities/user'; -import { IDelete, getApId, isTombstone, IObject, validPost, validActor } from '../../type'; -import { toSingle } from '@/prelude/array'; -import { deleteActor } from './actor'; - -/** - * 削除アクティビティを捌きます - */ -export default async (actor: IRemoteUser, activity: IDelete): Promise<string> => { - if ('actor' in activity && actor.uri !== activity.actor) { - throw new Error('invalid actor'); - } - - // 削除対象objectのtype - let formarType: string | undefined; - - if (typeof activity.object === 'string') { - // typeが不明だけど、どうせ消えてるのでremote resolveしない - formarType = undefined; - } else { - const object = activity.object as IObject; - if (isTombstone(object)) { - formarType = toSingle(object.formerType); - } else { - formarType = toSingle(object.type); - } - } - - const uri = getApId(activity.object); - - // type不明でもactorとobjectが同じならばそれはPersonに違いない - if (!formarType && actor.uri === uri) { - formarType = 'Person'; - } - - // それでもなかったらおそらくNote - if (!formarType) { - formarType = 'Note'; - } - - if (validPost.includes(formarType)) { - return await deleteNote(actor, uri); - } else if (validActor.includes(formarType)) { - return await deleteActor(actor, uri); - } else { - return `Unknown type ${formarType}`; - } -}; diff --git a/src/remote/activitypub/kernel/delete/note.ts b/src/remote/activitypub/kernel/delete/note.ts deleted file mode 100644 index 3875a33d13..0000000000 --- a/src/remote/activitypub/kernel/delete/note.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { IRemoteUser } from '@/models/entities/user'; -import deleteNode from '@/services/note/delete'; -import { apLogger } from '../../logger'; -import DbResolver from '../../db-resolver'; -import { getApLock } from '@/misc/app-lock'; -import { deleteMessage } from '@/services/messages/delete'; - -const logger = apLogger; - -export default async function(actor: IRemoteUser, uri: string): Promise<string> { - logger.info(`Deleting the Note: ${uri}`); - - const unlock = await getApLock(uri); - - try { - const dbResolver = new DbResolver(); - const note = await dbResolver.getNoteFromApId(uri); - - if (note == null) { - const message = await dbResolver.getMessageFromApId(uri); - if (message == null) return 'message not found'; - - if (message.userId !== actor.id) { - return '投稿を削除しようとしているユーザーは投稿の作成者ではありません'; - } - - await deleteMessage(message); - - return 'ok: message deleted'; - } - - if (note.userId !== actor.id) { - return '投稿を削除しようとしているユーザーは投稿の作成者ではありません'; - } - - await deleteNode(actor, note); - return 'ok: note deleted'; - } finally { - unlock(); - } -} |