feat: Announceを追加

This commit is contained in:
usbharu 2024-02-02 16:52:46 +09:00
parent f011e43379
commit 8e516420cf
3 changed files with 72 additions and 0 deletions

View File

@ -0,0 +1,18 @@
package dev.usbharu.hideout.activitypub.domain.model
import com.fasterxml.jackson.annotation.JsonCreator
import com.fasterxml.jackson.annotation.JsonProperty
import dev.usbharu.hideout.activitypub.domain.model.objects.Object
open class Announce @JsonCreator constructor(
type: List<String> = emptyList(),
@JsonProperty("object")
val apObject: String,
override val actor: String,
override val id: String,
val published: String,
val to: List<String> = emptyList(),
val cc: List<String> = emptyList()
) : Object(
type = add(type, "Announce")
), HasActor, HasId

View File

@ -0,0 +1,21 @@
package dev.usbharu.hideout.activitypub.service.activity.announce
import dev.usbharu.hideout.activitypub.domain.model.Announce
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.activitypub.service.objects.note.APNoteService
import dev.usbharu.hideout.application.external.Transaction
import org.springframework.stereotype.Service
@Service
class ApAnnounceProcessor(transaction: Transaction,private val apNoteService:APNoteService) :
AbstractActivityPubProcessor<Announce>(transaction) {
override suspend fun internalProcess(activity: ActivityPubProcessContext<Announce>) {
apNoteService.fetchAnnounce(activity.activity)
}
override fun isSupported(activityType: ActivityType): Boolean = ActivityType.Announce == activityType
override fun type(): Class<Announce> = Announce::class.java
}

View File

@ -0,0 +1,33 @@
package dev.usbharu.hideout.activitypub.domain.model
import com.fasterxml.jackson.module.kotlin.readValue
import dev.usbharu.hideout.application.config.ActivityPubConfig
import org.junit.jupiter.api.Assertions.*
import org.junit.jupiter.api.Test
class AnnounceTest{
@Test
fun mastodonのjsonをデシリアライズできる() {
//language=JSON
val json = """{
"@context": "https://www.w3.org/ns/activitystreams",
"id": "https://kb.usbharu.dev/users/usbharu/statuses/111859915842276344/activity",
"type": "Announce",
"actor": "https://kb.usbharu.dev/users/usbharu",
"published": "2024-02-02T04:07:40Z",
"to": [
"https://kb.usbharu.dev/users/usbharu/followers"
],
"cc": [
"https://kb.usbharu.dev/users/usbharu"
],
"object": "https://kb.usbharu.dev/users/usbharu/statuses/111850484548963326"
}"""
val objectMapper = ActivityPubConfig().objectMapper()
val readValue = objectMapper.readValue<Announce>(json)
}
}