mirror of https://github.com/usbharu/Hideout.git
feat: ActorをJSONに変換する処理を追加
This commit is contained in:
parent
ae0e4a4013
commit
98964cc656
|
@ -20,6 +20,15 @@ repositories {
|
|||
maven {
|
||||
url = uri("https://git.usbharu.dev/api/packages/usbharu/maven")
|
||||
}
|
||||
maven {
|
||||
name = "GitHubPackages"
|
||||
url = uri("https://maven.pkg.github.com/usbharu/activity-streams-serialization")
|
||||
credentials {
|
||||
|
||||
username = project.findProperty("gpr.user") as String? ?: System.getenv("USERNAME")
|
||||
password = project.findProperty("gpr.key") as String? ?: System.getenv("TOKEN")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
|
@ -33,6 +42,7 @@ dependencies {
|
|||
implementation(libs.owl.producer.embedded)
|
||||
implementation(libs.owl.common.serialize.jackson)
|
||||
implementation(libs.activity.streams.serialization)
|
||||
implementation(libs.jsonld)
|
||||
implementation(libs.coroutines.core)
|
||||
}
|
||||
|
||||
|
@ -66,7 +76,7 @@ tasks {
|
|||
exclude("**/org/koin/ksp/generated/**", "**/generated/**")
|
||||
}
|
||||
}
|
||||
withType<io.gitlab.arturbosch.detekt.DetektCreateBaselineTask>() {
|
||||
withType<io.gitlab.arturbosch.detekt.DetektCreateBaselineTask> {
|
||||
configureEach {
|
||||
exclude("**/org/koin/ksp/generated/**", "**/generated/**")
|
||||
}
|
||||
|
|
|
@ -5,7 +5,9 @@ import dev.usbharu.activitystreamsserialization.dsl.ActivityBuilder
|
|||
import dev.usbharu.activitystreamsserialization.other.JsonLd
|
||||
import dev.usbharu.hideout.core.domain.model.actor.Actor
|
||||
import dev.usbharu.hideout.core.domain.model.media.Media
|
||||
import org.springframework.stereotype.Service
|
||||
|
||||
@Service
|
||||
class ActorTranslator {
|
||||
fun translate(actor: Actor, iconMedia: Media?, bannerMedia: Media?): JsonLd {
|
||||
//todo actorにbot等の属性が生えてきたら対応する
|
||||
|
|
|
@ -1,12 +1,55 @@
|
|||
package dev.usbharu.hideout.activitypub.external.activitystreams
|
||||
|
||||
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
|
||||
import com.github.jsonldjava.core.JsonLdOptions
|
||||
import com.github.jsonldjava.core.JsonLdProcessor
|
||||
import com.github.jsonldjava.utils.JsonUtils
|
||||
import dev.usbharu.activitystreamsserialization.json.impl.JacksonSerializationConverter
|
||||
import org.junit.jupiter.api.Test
|
||||
import kotlin.test.assertEquals
|
||||
import kotlin.test.assertTrue
|
||||
|
||||
class ActorTranslatorTest {
|
||||
@Test
|
||||
fun translate() {
|
||||
val translate = ActorTranslator().translate(TestActorFactory.create(), null, null)
|
||||
val actor = TestActorFactory.create()
|
||||
val translate = ActorTranslator().translate(actor, null, null)
|
||||
println(translate)
|
||||
val compact = JsonLdProcessor.compact(
|
||||
JsonUtils.fromString(JacksonSerializationConverter.convert(translate.json).toString()),
|
||||
"https://www.w3.org/ns/activitystreams",
|
||||
JsonLdOptions()
|
||||
)
|
||||
println(JsonUtils.toPrettyString(compact))
|
||||
|
||||
val readTree = jacksonObjectMapper().readTree(JsonUtils.toString(compact))
|
||||
|
||||
assertEquals(actor.url.toString(), readTree["id"].asText())
|
||||
|
||||
assertEquals("Person", readTree["type"].asText())
|
||||
|
||||
// inbox, outbox のテスト
|
||||
assertEquals(actor.inbox.toString(), readTree["inbox"].asText())
|
||||
assertEquals(actor.outbox.toString(), readTree["outbox"].asText())
|
||||
|
||||
// followers, following のテスト
|
||||
assertEquals(actor.followersEndpoint.toString(), readTree["followers"].asText())
|
||||
assertEquals(actor.followingEndpoint.toString(), readTree["following"].asText())
|
||||
|
||||
// preferredUsername のテスト
|
||||
assertEquals(actor.name.name, readTree["preferredUsername"].asText())
|
||||
|
||||
// name のテスト
|
||||
assertEquals(actor.screenName.screenName, readTree["name"].asText())
|
||||
|
||||
// publicKey のテスト
|
||||
val publicKeyNode = readTree["https://w3id.org/security#publicKey"]
|
||||
assertTrue(publicKeyNode.isObject) // publicKey がオブジェクトか確認
|
||||
assertEquals(actor.keyId.keyId, publicKeyNode["id"].asText())
|
||||
assertEquals(actor.url.toString(), publicKeyNode["https://w3id.org/security#owner"].asText())
|
||||
assertEquals(actor.publicKey.publicKey, publicKeyNode["https://w3id.org/security#publicKeyPem"].asText())
|
||||
|
||||
// @context のテスト
|
||||
assertEquals("https://www.w3.org/ns/activitystreams", readTree["@context"].asText())
|
||||
}
|
||||
}
|
|
@ -108,6 +108,8 @@ activity-streams-serialization = { module = "dev.usbharu:activity-streams-serial
|
|||
|
||||
logback-ecs-encoder = { module = "co.elastic.logging:logback-ecs-encoder", version = "1.6.0" }
|
||||
|
||||
jsonld = { module = "com.github.jsonld-java:jsonld-java", version = "0.13.5" }
|
||||
|
||||
[bundles]
|
||||
|
||||
exposed = ["exposed-core", "exposed-java-time", "exposed-jdbc", "exposed-spring"]
|
||||
|
|
Loading…
Reference in New Issue