summaryrefslogtreecommitdiff
path: root/src/remote/activitypub/kernel/delete
diff options
context:
space:
mode:
Diffstat (limited to 'src/remote/activitypub/kernel/delete')
-rw-r--r--src/remote/activitypub/kernel/delete/actor.ts26
-rw-r--r--src/remote/activitypub/kernel/delete/index.ts49
-rw-r--r--src/remote/activitypub/kernel/delete/note.ts41
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();
- }
-}