From a00c9e6313caacab1309e919db8e277c1a9f7496 Mon Sep 17 00:00:00 2001 From: usbharu <64310155+usbharu@users.noreply.github.com> Date: Fri, 8 Dec 2023 12:22:24 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20Block=E3=81=AE=E9=85=8D=E9=80=81?= =?UTF-8?q?=E5=87=A6=E7=90=86=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../block/APDeliverBlockJobProcessor.kt | 34 +++++++++++++++ .../core/external/job/DeliverBlockJob.kt | 43 +++++++++++++++++++ 2 files changed, 77 insertions(+) create mode 100644 src/main/kotlin/dev/usbharu/hideout/activitypub/service/activity/block/APDeliverBlockJobProcessor.kt create mode 100644 src/main/kotlin/dev/usbharu/hideout/core/external/job/DeliverBlockJob.kt diff --git a/src/main/kotlin/dev/usbharu/hideout/activitypub/service/activity/block/APDeliverBlockJobProcessor.kt b/src/main/kotlin/dev/usbharu/hideout/activitypub/service/activity/block/APDeliverBlockJobProcessor.kt new file mode 100644 index 00000000..0b56ac8c --- /dev/null +++ b/src/main/kotlin/dev/usbharu/hideout/activitypub/service/activity/block/APDeliverBlockJobProcessor.kt @@ -0,0 +1,34 @@ +package dev.usbharu.hideout.activitypub.service.activity.block + +import dev.usbharu.hideout.activitypub.service.common.APRequestService +import dev.usbharu.hideout.application.external.Transaction +import dev.usbharu.hideout.core.domain.model.user.UserRepository +import dev.usbharu.hideout.core.external.job.DeliverBlockJob +import dev.usbharu.hideout.core.external.job.DeliverBlockJobParam +import dev.usbharu.hideout.core.service.job.JobProcessor +import org.springframework.stereotype.Service + +@Service +class APDeliverBlockJobProcessor( + private val apRequestService: APRequestService, + private val userRepository: UserRepository, + private val transaction: Transaction, + private val deliverBlockJob: DeliverBlockJob +) : JobProcessor { + override suspend fun process(param: DeliverBlockJobParam): Unit = transaction.transaction { + + val signer = userRepository.findById(param.signer) + apRequestService.apPost( + param.inbox, + param.reject, + signer + ) + apRequestService.apPost( + param.inbox, + param.block, + signer + ) + } + + override fun job(): DeliverBlockJob = deliverBlockJob +} diff --git a/src/main/kotlin/dev/usbharu/hideout/core/external/job/DeliverBlockJob.kt b/src/main/kotlin/dev/usbharu/hideout/core/external/job/DeliverBlockJob.kt new file mode 100644 index 00000000..8f55831e --- /dev/null +++ b/src/main/kotlin/dev/usbharu/hideout/core/external/job/DeliverBlockJob.kt @@ -0,0 +1,43 @@ +package dev.usbharu.hideout.core.external.job + +import com.fasterxml.jackson.databind.ObjectMapper +import com.fasterxml.jackson.module.kotlin.readValue +import dev.usbharu.hideout.activitypub.domain.model.Block +import dev.usbharu.hideout.activitypub.domain.model.Reject +import kjob.core.dsl.ScheduleContext +import kjob.core.job.JobProps +import org.springframework.beans.factory.annotation.Qualifier +import org.springframework.stereotype.Component + +data class DeliverBlockJobParam( + val signer: Long, + val block: Block, + val reject: Reject, + val inbox: String +) + +@Component +class DeliverBlockJob(@Qualifier("activitypub") private val objectMapper: ObjectMapper) : + HideoutJob("DeliverBlockJob") { + + val block = string("block") + val reject = string("reject") + val inbox = string("inbox") + val signer = long("signer") + + override fun convert(value: DeliverBlockJobParam): ScheduleContext.(DeliverBlockJob) -> Unit = { + props[block] = objectMapper.writeValueAsString(value.block) + props[reject] = objectMapper.writeValueAsString(value.reject) + props[reject] = value.inbox + props[signer] = value.signer + } + + override fun convert(props: JobProps): DeliverBlockJobParam = DeliverBlockJobParam( + props[signer], + objectMapper.readValue(props[block]), + objectMapper.readValue(props[reject]), + props[inbox] + ) + + +}