mirror of https://github.com/usbharu/Hideout.git
Merge pull request #240 from usbharu/feature/follow-activity
feat: Followアクティビティにidを追加
This commit is contained in:
commit
27ac24f68a
|
@ -6,12 +6,12 @@ import dev.usbharu.hideout.activitypub.domain.model.objects.Object
|
|||
open class Follow(
|
||||
type: List<String> = emptyList(),
|
||||
@JsonProperty("object") val apObject: String,
|
||||
override val actor: String
|
||||
override val actor: String,
|
||||
val id: String? = null
|
||||
) : Object(
|
||||
type = add(type, "Follow")
|
||||
),
|
||||
HasActor {
|
||||
|
||||
override fun equals(other: Any?): Boolean {
|
||||
if (this === other) return true
|
||||
if (javaClass != other?.javaClass) return false
|
||||
|
@ -21,6 +21,7 @@ open class Follow(
|
|||
|
||||
if (apObject != other.apObject) return false
|
||||
if (actor != other.actor) return false
|
||||
if (id != other.id) return false
|
||||
|
||||
return true
|
||||
}
|
||||
|
@ -29,13 +30,15 @@ open class Follow(
|
|||
var result = super.hashCode()
|
||||
result = 31 * result + apObject.hashCode()
|
||||
result = 31 * result + actor.hashCode()
|
||||
result = 31 * result + (id?.hashCode() ?: 0)
|
||||
return result
|
||||
}
|
||||
|
||||
override fun toString(): String {
|
||||
return "Follow(" +
|
||||
"apObject='$apObject', " +
|
||||
"actor='$actor'" +
|
||||
"actor='$actor', " +
|
||||
"id=$id" +
|
||||
")" +
|
||||
" ${super.toString()}"
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ package dev.usbharu.hideout.activitypub.service.activity.follow
|
|||
|
||||
import dev.usbharu.hideout.activitypub.domain.model.Follow
|
||||
import dev.usbharu.hideout.activitypub.service.common.APRequestService
|
||||
import dev.usbharu.hideout.application.config.ApplicationConfig
|
||||
import dev.usbharu.hideout.core.service.follow.SendFollowDto
|
||||
import org.springframework.stereotype.Service
|
||||
|
||||
|
@ -12,11 +13,13 @@ interface APSendFollowService {
|
|||
@Service
|
||||
class APSendFollowServiceImpl(
|
||||
private val apRequestService: APRequestService,
|
||||
private val applicationConfig: ApplicationConfig,
|
||||
) : APSendFollowService {
|
||||
override suspend fun sendFollow(sendFollowDto: SendFollowDto) {
|
||||
val follow = Follow(
|
||||
apObject = sendFollowDto.followTargetActorId.url,
|
||||
actor = sendFollowDto.actorId.url
|
||||
actor = sendFollowDto.actorId.url,
|
||||
id = "${applicationConfig.url}/follow/${sendFollowDto.actorId.id}/${sendFollowDto.followTargetActorId.id}"
|
||||
)
|
||||
|
||||
apRequestService.apPost(sendFollowDto.followTargetActorId.inbox, follow, sendFollowDto.actorId)
|
||||
|
|
|
@ -53,7 +53,8 @@ class RejectTest {
|
|||
"https://misskey.usbharu.dev/06407419-5aeb-4e2d-8885-aa54b03decf0",
|
||||
Follow(
|
||||
apObject = "https://misskey.usbharu.dev/users/97ws8y3rj6",
|
||||
actor = "https://test-hideout.usbharu.dev/users/test-user2"
|
||||
actor = "https://test-hideout.usbharu.dev/users/test-user2",
|
||||
id = "https://misskey.usbharu.dev/follows/9mxh6mawru/97ws8y3rj6"
|
||||
)
|
||||
).apply { context = listOf("https://www.w3.org/ns/activitystreams", "https://w3id.org/security/v1") }
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@ package dev.usbharu.hideout.activitypub.service.activity.follow
|
|||
|
||||
import dev.usbharu.hideout.activitypub.domain.model.Follow
|
||||
import dev.usbharu.hideout.activitypub.service.common.APRequestService
|
||||
import dev.usbharu.hideout.application.config.ApplicationConfig
|
||||
import dev.usbharu.hideout.core.service.follow.SendFollowDto
|
||||
import kotlinx.coroutines.test.runTest
|
||||
import org.junit.jupiter.api.Test
|
||||
|
@ -10,12 +11,14 @@ import org.mockito.kotlin.mock
|
|||
import org.mockito.kotlin.times
|
||||
import org.mockito.kotlin.verify
|
||||
import utils.UserBuilder
|
||||
import java.net.URL
|
||||
|
||||
class APSendFollowServiceImplTest {
|
||||
@Test
|
||||
fun `sendFollow フォローするユーザーのinboxにFollowオブジェクトが送られる`() = runTest {
|
||||
val apRequestService = mock<APRequestService>()
|
||||
val apSendFollowServiceImpl = APSendFollowServiceImpl(apRequestService)
|
||||
val applicationConfig = ApplicationConfig(URL("https://example.com"))
|
||||
val apSendFollowServiceImpl = APSendFollowServiceImpl(apRequestService, applicationConfig)
|
||||
|
||||
val sendFollowDto = SendFollowDto(
|
||||
UserBuilder.localUserOf(),
|
||||
|
@ -25,7 +28,8 @@ class APSendFollowServiceImplTest {
|
|||
|
||||
val value = Follow(
|
||||
apObject = sendFollowDto.followTargetActorId.url,
|
||||
actor = sendFollowDto.actorId.url
|
||||
actor = sendFollowDto.actorId.url,
|
||||
id = "${applicationConfig.url}/follow/${sendFollowDto.actorId.id}/${sendFollowDto.followTargetActorId.id}"
|
||||
)
|
||||
verify(apRequestService, times(1)).apPost(
|
||||
eq(sendFollowDto.followTargetActorId.inbox),
|
||||
|
|
Loading…
Reference in New Issue