From c98a90e2fc514da280cf56da7f81f07ca12c6721 Mon Sep 17 00:00:00 2001 From: usbharu <64310155+usbharu@users.noreply.github.com> Date: Wed, 13 Dec 2023 16:21:23 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=E3=82=A2=E3=82=AB=E3=82=A6=E3=83=B3?= =?UTF-8?q?=E3=83=88=E5=89=8A=E9=99=A4=E3=82=A2=E3=82=AF=E3=83=86=E3=82=A3?= =?UTF-8?q?=E3=83=93=E3=83=86=E3=82=A3=E3=81=AB=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../activity/delete/APDeleteProcessor.kt | 31 ++++++++++++++----- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/src/main/kotlin/dev/usbharu/hideout/activitypub/service/activity/delete/APDeleteProcessor.kt b/src/main/kotlin/dev/usbharu/hideout/activitypub/service/activity/delete/APDeleteProcessor.kt index c628e491..ef3a6b6f 100644 --- a/src/main/kotlin/dev/usbharu/hideout/activitypub/service/activity/delete/APDeleteProcessor.kt +++ b/src/main/kotlin/dev/usbharu/hideout/activitypub/service/activity/delete/APDeleteProcessor.kt @@ -3,37 +3,54 @@ package dev.usbharu.hideout.activitypub.service.activity.delete import dev.usbharu.hideout.activitypub.domain.exception.IllegalActivityPubObjectException import dev.usbharu.hideout.activitypub.domain.model.Delete import dev.usbharu.hideout.activitypub.domain.model.HasId +import dev.usbharu.hideout.activitypub.domain.model.objects.ObjectValue import dev.usbharu.hideout.activitypub.service.common.AbstractActivityPubProcessor import dev.usbharu.hideout.activitypub.service.common.ActivityPubProcessContext import dev.usbharu.hideout.activitypub.service.common.ActivityType import dev.usbharu.hideout.application.external.Transaction import dev.usbharu.hideout.core.domain.exception.FailedToGetResourcesException +import dev.usbharu.hideout.core.query.ActorQueryService import dev.usbharu.hideout.core.query.PostQueryService import dev.usbharu.hideout.core.service.post.PostService +import dev.usbharu.hideout.core.service.user.UserService import org.springframework.stereotype.Service @Service class APDeleteProcessor( transaction: Transaction, private val postQueryService: PostQueryService, + private val actorQueryService: ActorQueryService, + private val userService: UserService, private val postService: PostService ) : AbstractActivityPubProcessor(transaction) { override suspend fun internalProcess(activity: ActivityPubProcessContext) { val value = activity.activity.apObject - if (value !is HasId) { - throw IllegalActivityPubObjectException("object hasn't id") + val deleteId = if (value is HasId) { + value.id + } else if (value is ObjectValue) { + value.`object` + } else { + throw IllegalActivityPubObjectException("object hasn't id or object") } - val deleteId = value.id - val post = try { - postQueryService.findByApId(deleteId) + + try { + val actor = actorQueryService.findByUrl(deleteId) + userService.deleteRemoteActor(actor.id) + } catch (e: Exception) { + logger.warn("FAILED delete id: {} is not found.", deleteId, e) + } + + try { + val post = postQueryService.findByApId(deleteId) + postService.deleteRemote(post) } catch (e: FailedToGetResourcesException) { logger.warn("FAILED delete id: {} is not found.", deleteId, e) - return + } - postService.deleteRemote(post) + } override fun isSupported(activityType: ActivityType): Boolean = activityType == ActivityType.Delete