diff --git a/src/main/kotlin/dev/usbharu/hideout/JobQueueRunner.kt b/src/main/kotlin/dev/usbharu/hideout/JobQueueRunner.kt index 0f3a3829..697ab365 100644 --- a/src/main/kotlin/dev/usbharu/hideout/JobQueueRunner.kt +++ b/src/main/kotlin/dev/usbharu/hideout/JobQueueRunner.kt @@ -1,7 +1,7 @@ package dev.usbharu.hideout import dev.usbharu.hideout.domain.model.job.HideoutJob -import dev.usbharu.hideout.service.ap.APService +import dev.usbharu.hideout.service.ap.job.ApJobService import dev.usbharu.hideout.service.job.JobQueueParentService import dev.usbharu.hideout.service.job.JobQueueWorkerService import org.slf4j.Logger @@ -27,7 +27,7 @@ class JobQueueRunner(private val jobQueueParentService: JobQueueParentService, p class JobQueueWorkerRunner( private val jobQueueWorkerService: JobQueueWorkerService, private val jobs: List, - private val apService: APService + private val apJobService: ApJobService ) : ApplicationRunner { override fun run(args: ApplicationArguments?) { LOGGER.info("Init job queue worker.") @@ -36,7 +36,7 @@ class JobQueueWorkerRunner( it to { execute { LOGGER.debug("excute job ${it.name}") - apService.processActivity( + apJobService.processActivity( job = this, hideoutJob = it ) diff --git a/src/main/kotlin/dev/usbharu/hideout/service/ap/APService.kt b/src/main/kotlin/dev/usbharu/hideout/service/ap/APService.kt index 73fcd83b..60f2a811 100644 --- a/src/main/kotlin/dev/usbharu/hideout/service/ap/APService.kt +++ b/src/main/kotlin/dev/usbharu/hideout/service/ap/APService.kt @@ -5,13 +5,10 @@ import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.module.kotlin.readValue import dev.usbharu.hideout.domain.model.ActivityPubResponse import dev.usbharu.hideout.domain.model.ap.Follow -import dev.usbharu.hideout.domain.model.job.* import dev.usbharu.hideout.exception.JsonParseException import dev.usbharu.hideout.service.ap.job.APReceiveFollowJobService import dev.usbharu.hideout.service.ap.job.ApNoteJobService import dev.usbharu.hideout.service.ap.job.ApReactionJobService -import kjob.core.dsl.JobContextWithProps -import kjob.core.job.JobProps import org.slf4j.Logger import org.slf4j.LoggerFactory import org.springframework.beans.factory.annotation.Qualifier @@ -21,8 +18,6 @@ interface APService { fun parseActivity(json: String): ActivityType suspend fun processActivity(json: String, type: ActivityType): ActivityPubResponse? - - suspend fun processActivity(job: JobContextWithProps, hideoutJob: HideoutJob) } enum class ActivityType { @@ -233,28 +228,5 @@ class APServiceImpl( } } - @Suppress("REDUNDANT_ELSE_IN_WHEN") - override suspend fun processActivity(job: JobContextWithProps, hideoutJob: HideoutJob) { - logger.debug("processActivity: ${hideoutJob.name}") - @Suppress("ElseCaseInsteadOfExhaustiveWhen") - // Springで作成されるプロキシの都合上パターンマッチングが壊れるので必須 - when (hideoutJob) { - is ReceiveFollowJob -> { - apReceiveFollowJobService.receiveFollowJob( - job.props as JobProps - ) - } - - is DeliverPostJob -> apNoteJobService.createNoteJob(job.props as JobProps) - is DeliverReactionJob -> apReactionJobService.reactionJob(job.props as JobProps) - is DeliverRemoveReactionJob -> apReactionJobService.removeReactionJob( - job.props as JobProps - ) - - else -> { - throw IllegalStateException("WTF") - } - } - } } diff --git a/src/main/kotlin/dev/usbharu/hideout/service/ap/job/ApJobService.kt b/src/main/kotlin/dev/usbharu/hideout/service/ap/job/ApJobService.kt new file mode 100644 index 00000000..196b74c9 --- /dev/null +++ b/src/main/kotlin/dev/usbharu/hideout/service/ap/job/ApJobService.kt @@ -0,0 +1,8 @@ +package dev.usbharu.hideout.service.ap.job + +import dev.usbharu.hideout.domain.model.job.HideoutJob +import kjob.core.dsl.JobContextWithProps + +interface ApJobService { + suspend fun processActivity(job: JobContextWithProps, hideoutJob: HideoutJob) +} diff --git a/src/main/kotlin/dev/usbharu/hideout/service/ap/job/ApJobServiceImpl.kt b/src/main/kotlin/dev/usbharu/hideout/service/ap/job/ApJobServiceImpl.kt new file mode 100644 index 00000000..266b74d0 --- /dev/null +++ b/src/main/kotlin/dev/usbharu/hideout/service/ap/job/ApJobServiceImpl.kt @@ -0,0 +1,43 @@ +package dev.usbharu.hideout.service.ap.job + +import dev.usbharu.hideout.domain.model.job.* +import kjob.core.dsl.JobContextWithProps +import kjob.core.job.JobProps +import org.slf4j.LoggerFactory +import org.springframework.stereotype.Service + +@Service +class ApJobServiceImpl( + private val apReceiveFollowJobService: APReceiveFollowJobService, + private val apNoteJobService: ApNoteJobService, + private val apReactionJobService: ApReactionJobService +) : ApJobService { + @Suppress("REDUNDANT_ELSE_IN_WHEN") + override suspend fun processActivity(job: JobContextWithProps, hideoutJob: HideoutJob) { + logger.debug("processActivity: ${hideoutJob.name}") + + @Suppress("ElseCaseInsteadOfExhaustiveWhen") + // Springで作成されるプロキシの都合上パターンマッチングが壊れるので必須 + when (hideoutJob) { + is ReceiveFollowJob -> { + apReceiveFollowJobService.receiveFollowJob( + job.props as JobProps + ) + } + + is DeliverPostJob -> apNoteJobService.createNoteJob(job.props as JobProps) + is DeliverReactionJob -> apReactionJobService.reactionJob(job.props as JobProps) + is DeliverRemoveReactionJob -> apReactionJobService.removeReactionJob( + job.props as JobProps + ) + + else -> { + throw IllegalStateException("WTF") + } + } + } + + companion object { + private val logger = LoggerFactory.getLogger(ApJobServiceImpl::class.java) + } +}