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 {
|
maven {
|
||||||
url = uri("https://git.usbharu.dev/api/packages/usbharu/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 {
|
dependencies {
|
||||||
|
@ -33,6 +42,7 @@ dependencies {
|
||||||
implementation(libs.owl.producer.embedded)
|
implementation(libs.owl.producer.embedded)
|
||||||
implementation(libs.owl.common.serialize.jackson)
|
implementation(libs.owl.common.serialize.jackson)
|
||||||
implementation(libs.activity.streams.serialization)
|
implementation(libs.activity.streams.serialization)
|
||||||
|
implementation(libs.jsonld)
|
||||||
implementation(libs.coroutines.core)
|
implementation(libs.coroutines.core)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -66,7 +76,7 @@ tasks {
|
||||||
exclude("**/org/koin/ksp/generated/**", "**/generated/**")
|
exclude("**/org/koin/ksp/generated/**", "**/generated/**")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
withType<io.gitlab.arturbosch.detekt.DetektCreateBaselineTask>() {
|
withType<io.gitlab.arturbosch.detekt.DetektCreateBaselineTask> {
|
||||||
configureEach {
|
configureEach {
|
||||||
exclude("**/org/koin/ksp/generated/**", "**/generated/**")
|
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.activitystreamsserialization.other.JsonLd
|
||||||
import dev.usbharu.hideout.core.domain.model.actor.Actor
|
import dev.usbharu.hideout.core.domain.model.actor.Actor
|
||||||
import dev.usbharu.hideout.core.domain.model.media.Media
|
import dev.usbharu.hideout.core.domain.model.media.Media
|
||||||
|
import org.springframework.stereotype.Service
|
||||||
|
|
||||||
|
@Service
|
||||||
class ActorTranslator {
|
class ActorTranslator {
|
||||||
fun translate(actor: Actor, iconMedia: Media?, bannerMedia: Media?): JsonLd {
|
fun translate(actor: Actor, iconMedia: Media?, bannerMedia: Media?): JsonLd {
|
||||||
//todo actorにbot等の属性が生えてきたら対応する
|
//todo actorにbot等の属性が生えてきたら対応する
|
||||||
|
|
|
@ -1,12 +1,55 @@
|
||||||
package dev.usbharu.hideout.activitypub.external.activitystreams
|
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 org.junit.jupiter.api.Test
|
||||||
|
import kotlin.test.assertEquals
|
||||||
|
import kotlin.test.assertTrue
|
||||||
|
|
||||||
class ActorTranslatorTest {
|
class ActorTranslatorTest {
|
||||||
@Test
|
@Test
|
||||||
fun translate() {
|
fun translate() {
|
||||||
val translate = ActorTranslator().translate(TestActorFactory.create(), null, null)
|
val actor = TestActorFactory.create()
|
||||||
|
val translate = ActorTranslator().translate(actor, null, null)
|
||||||
println(translate)
|
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" }
|
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]
|
[bundles]
|
||||||
|
|
||||||
exposed = ["exposed-core", "exposed-java-time", "exposed-jdbc", "exposed-spring"]
|
exposed = ["exposed-core", "exposed-java-time", "exposed-jdbc", "exposed-spring"]
|
||||||
|
|
Loading…
Reference in New Issue