From 1a7cec5c7bde11216e38d1b2588ee0ecc198f9a7 Mon Sep 17 00:00:00 2001 From: usbharu <64310155+usbharu@users.noreply.github.com> Date: Fri, 8 Dec 2023 12:59:43 +0900 Subject: [PATCH] =?UTF-8?q?doc:=20=E3=83=89=E3=82=AD=E3=83=A5=E3=83=A1?= =?UTF-8?q?=E3=83=B3=E3=83=88=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 | 3 +++ .../block/BlockActivityPubProcessor.kt | 3 +++ .../hideout/core/domain/model/block/Block.kt | 6 +++++ .../domain/model/block/BlockRepository.kt | 24 +++++++++++++++++++ .../core/external/job/DeliverBlockJob.kt | 11 +++++++++ .../core/service/block/BlockService.kt | 19 +++++++++++++++ .../service/account/AccountApiService.kt | 8 +++++++ 7 files changed, 74 insertions(+) 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 index 0b56ac8c..37236c0f 100644 --- 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 @@ -8,6 +8,9 @@ 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, diff --git a/src/main/kotlin/dev/usbharu/hideout/activitypub/service/activity/block/BlockActivityPubProcessor.kt b/src/main/kotlin/dev/usbharu/hideout/activitypub/service/activity/block/BlockActivityPubProcessor.kt index 9dd2276d..1bb40c19 100644 --- a/src/main/kotlin/dev/usbharu/hideout/activitypub/service/activity/block/BlockActivityPubProcessor.kt +++ b/src/main/kotlin/dev/usbharu/hideout/activitypub/service/activity/block/BlockActivityPubProcessor.kt @@ -10,6 +10,9 @@ import dev.usbharu.hideout.core.service.block.BlockService import org.springframework.stereotype.Service +/** + * ブロックアクティビティを処理します + */ @Service class BlockActivityPubProcessor( private val blockService: BlockService, diff --git a/src/main/kotlin/dev/usbharu/hideout/core/domain/model/block/Block.kt b/src/main/kotlin/dev/usbharu/hideout/core/domain/model/block/Block.kt index a2ddf940..7435183e 100644 --- a/src/main/kotlin/dev/usbharu/hideout/core/domain/model/block/Block.kt +++ b/src/main/kotlin/dev/usbharu/hideout/core/domain/model/block/Block.kt @@ -1,5 +1,11 @@ package dev.usbharu.hideout.core.domain.model.block +/** + * ブロック関係を表します + * + * @property userId ブロックの動作を行ったユーザーid + * @property target ブロックの対象のユーザーid + */ data class Block( val userId: Long, val target: Long diff --git a/src/main/kotlin/dev/usbharu/hideout/core/domain/model/block/BlockRepository.kt b/src/main/kotlin/dev/usbharu/hideout/core/domain/model/block/BlockRepository.kt index a847bb4a..3504ffea 100644 --- a/src/main/kotlin/dev/usbharu/hideout/core/domain/model/block/BlockRepository.kt +++ b/src/main/kotlin/dev/usbharu/hideout/core/domain/model/block/BlockRepository.kt @@ -1,7 +1,31 @@ package dev.usbharu.hideout.core.domain.model.block +/** + * ブロックの状態を永続化します + * + */ interface BlockRepository { + /** + * ブロックの状態を永続化します + * + * @param block 永続化するブロック + * @return 永続化されたブロック + */ suspend fun save(block: Block): Block + + /** + * ブロックの状態を削除します + * + * @param block 削除する永続化されたブロック + */ suspend fun delete(block: Block) + + /** + * + * + * @param userId + * @param target + * @return + */ suspend fun findByUserIdAndTarget(userId: Long, target: Long): Block } 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 index 8f55831e..3e8688b9 100644 --- a/src/main/kotlin/dev/usbharu/hideout/core/external/job/DeliverBlockJob.kt +++ b/src/main/kotlin/dev/usbharu/hideout/core/external/job/DeliverBlockJob.kt @@ -9,6 +9,14 @@ import kjob.core.job.JobProps import org.springframework.beans.factory.annotation.Qualifier import org.springframework.stereotype.Component +/** + * ブロックアクティビティ配送のジョブパラメーター + * + * @property signer ブロック操作を行ったユーザーid + * @property block 配送するブロックアクティビティ + * @property reject 配送するフォロー解除アクティビティ + * @property inbox 配送先url + */ data class DeliverBlockJobParam( val signer: Long, val block: Block, @@ -16,6 +24,9 @@ data class DeliverBlockJobParam( val inbox: String ) +/** + * ブロックアクティビティ配送のジョブ + */ @Component class DeliverBlockJob(@Qualifier("activitypub") private val objectMapper: ObjectMapper) : HideoutJob("DeliverBlockJob") { diff --git a/src/main/kotlin/dev/usbharu/hideout/core/service/block/BlockService.kt b/src/main/kotlin/dev/usbharu/hideout/core/service/block/BlockService.kt index 8988a15d..83d1512c 100644 --- a/src/main/kotlin/dev/usbharu/hideout/core/service/block/BlockService.kt +++ b/src/main/kotlin/dev/usbharu/hideout/core/service/block/BlockService.kt @@ -1,6 +1,25 @@ package dev.usbharu.hideout.core.service.block +/** + * ブロックに関する処理を行います + * + */ interface BlockService { + /** + * ブロックします + * 実装はリモートユーザーへのブロックの場合ブロックアクティビティを配送するべきです。 + * + * @param userId ブロックの動作を行ったユーザーid + * @param target ブロック対象のユーザーid + */ suspend fun block(userId: Long, target: Long) + + /** + * ブロックを解除します + * 実装はリモートユーザーへのブロック解除の場合Undo Blockアクティビティを配送するべきです + * + * @param userId ブロック解除の動作を行ったユーザーid + * @param target ブロック解除の対象のユーザーid + */ suspend fun unblock(userId: Long, target: Long) } diff --git a/src/main/kotlin/dev/usbharu/hideout/mastodon/service/account/AccountApiService.kt b/src/main/kotlin/dev/usbharu/hideout/mastodon/service/account/AccountApiService.kt index 2e9f76f4..15d7f308 100644 --- a/src/main/kotlin/dev/usbharu/hideout/mastodon/service/account/AccountApiService.kt +++ b/src/main/kotlin/dev/usbharu/hideout/mastodon/service/account/AccountApiService.kt @@ -35,6 +35,14 @@ interface AccountApiService { suspend fun follow(userid: Long, followeeId: Long): Relationship suspend fun account(id: Long): Account suspend fun relationships(userid: Long, id: List, withSuspended: Boolean): List + + /** + * ブロック操作を行う + * + * @param userid ブロック操作を行ったユーザーid + * @param target ブロック対象のユーザーid + * @return ブロック後のブロック対象ユーザーとの[Relationship] + */ suspend fun block(userid: Long, target: Long): Relationship }