From ecdbf74e574a33f7b995fe593e681f5bfe0f29a2 Mon Sep 17 00:00:00 2001 From: usbharu Date: Wed, 19 Feb 2025 12:33:17 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20WebHostMetadata=E3=82=92XRD?= =?UTF-8?q?=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WebFingerHostMetaLinkConfiguration.kt | 5 +++-- .../interfaces/wellknown/HostmetaController.kt | 14 ++++++-------- .../wellknown/XRD.kt} | 17 ++++++++++++++--- 3 files changed, 23 insertions(+), 13 deletions(-) rename hideout/hideout-activitypub/src/main/kotlin/dev/usbharu/hideout/activitypub/{application/hostmeta/WebHostMetadata.kt => interfaces/wellknown/XRD.kt} (58%) diff --git a/hideout/hideout-activitypub/src/main/kotlin/dev/usbharu/hideout/activitypub/config/WebFingerHostMetaLinkConfiguration.kt b/hideout/hideout-activitypub/src/main/kotlin/dev/usbharu/hideout/activitypub/config/WebFingerHostMetaLinkConfiguration.kt index 03220ad2..7882f5b8 100644 --- a/hideout/hideout-activitypub/src/main/kotlin/dev/usbharu/hideout/activitypub/config/WebFingerHostMetaLinkConfiguration.kt +++ b/hideout/hideout-activitypub/src/main/kotlin/dev/usbharu/hideout/activitypub/config/WebFingerHostMetaLinkConfiguration.kt @@ -1,6 +1,6 @@ package dev.usbharu.hideout.activitypub.config -import dev.usbharu.hideout.activitypub.application.hostmeta.Link +import dev.usbharu.hideout.activitypub.interfaces.wellknown.Link import dev.usbharu.hideout.core.config.ApplicationConfig import org.springframework.context.annotation.Bean import org.springframework.context.annotation.Configuration @@ -12,7 +12,8 @@ class WebFingerHostMetaLinkConfiguration(private val applicationConfig: Applicat return Link( rel = "lrdd", type = "application/jrd+json", - template = applicationConfig.url.resolve(".well-known/webfinger").toString() + "?resource={uri}" + template = applicationConfig.url.resolve(".well-known/webfinger").toString() + "?resource={uri}", + href = null ) } } diff --git a/hideout/hideout-activitypub/src/main/kotlin/dev/usbharu/hideout/activitypub/interfaces/wellknown/HostmetaController.kt b/hideout/hideout-activitypub/src/main/kotlin/dev/usbharu/hideout/activitypub/interfaces/wellknown/HostmetaController.kt index 2f1a2671..7b11c9cb 100644 --- a/hideout/hideout-activitypub/src/main/kotlin/dev/usbharu/hideout/activitypub/interfaces/wellknown/HostmetaController.kt +++ b/hideout/hideout-activitypub/src/main/kotlin/dev/usbharu/hideout/activitypub/interfaces/wellknown/HostmetaController.kt @@ -1,7 +1,5 @@ package dev.usbharu.hideout.activitypub.interfaces.wellknown -import dev.usbharu.hideout.activitypub.application.hostmeta.Link -import dev.usbharu.hideout.activitypub.application.hostmeta.WebHostMetadata import org.springframework.core.annotation.Order import org.springframework.http.MediaType import org.springframework.http.ResponseEntity @@ -14,19 +12,19 @@ import org.springframework.web.bind.annotation.RestController class HostmetaController(private val linkList: List = emptyList()) { @Order(1) @GetMapping("/host-meta") - fun hostmeta(): ResponseEntity { + fun hostmeta(): ResponseEntity { return ResponseEntity.ok().contentType(MediaType("application", "xrd+xml")) - .body(WebHostMetadata(linkList)) + .body(XRD(linkList)) } @Order(2) @GetMapping("/host-meta", produces = ["application/json"]) - fun hostmetaJson(): WebHostMetadata { - return WebHostMetadata(linkList) + fun hostmetaJson(): XRD { + return XRD(linkList) } @GetMapping("/host-meta.json", produces = ["application/json"]) - fun hostmetaJson2(): WebHostMetadata { - return WebHostMetadata(linkList) + fun hostmetaJson2(): XRD { + return XRD(linkList) } } diff --git a/hideout/hideout-activitypub/src/main/kotlin/dev/usbharu/hideout/activitypub/application/hostmeta/WebHostMetadata.kt b/hideout/hideout-activitypub/src/main/kotlin/dev/usbharu/hideout/activitypub/interfaces/wellknown/XRD.kt similarity index 58% rename from hideout/hideout-activitypub/src/main/kotlin/dev/usbharu/hideout/activitypub/application/hostmeta/WebHostMetadata.kt rename to hideout/hideout-activitypub/src/main/kotlin/dev/usbharu/hideout/activitypub/interfaces/wellknown/XRD.kt index 9cb4bdf5..1f4827f4 100644 --- a/hideout/hideout-activitypub/src/main/kotlin/dev/usbharu/hideout/activitypub/application/hostmeta/WebHostMetadata.kt +++ b/hideout/hideout-activitypub/src/main/kotlin/dev/usbharu/hideout/activitypub/interfaces/wellknown/XRD.kt @@ -1,20 +1,31 @@ -package dev.usbharu.hideout.activitypub.application.hostmeta +package dev.usbharu.hideout.activitypub.interfaces.wellknown +import com.fasterxml.jackson.annotation.JsonInclude import com.fasterxml.jackson.annotation.JsonProperty import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement +import java.net.URI @JacksonXmlRootElement(localName = "XRD", namespace = "http://docs.oasis-open.org/ns/xri/xrd-1.0") -class WebHostMetadata( +@JsonInclude(JsonInclude.Include.NON_NULL) +class XRD( @JacksonXmlProperty(localName = "Link", namespace = "http://docs.oasis-open.org/ns/xri/xrd-1.0") @JacksonXmlElementWrapper(useWrapping = false) @JsonProperty("links") val links: List, + @JacksonXmlProperty(localName = "subject") + @JsonProperty(value = "subject") + @JsonInclude(JsonInclude.Include.NON_NULL) + val subject: URI? = null, ) +@JsonInclude(JsonInclude.Include.NON_NULL) class Link( @JacksonXmlProperty(localName = "rel", isAttribute = true) val rel: String, - @JacksonXmlProperty(localName = "template", isAttribute = true) val template: String, + @JsonInclude(JsonInclude.Include.NON_NULL) + @JacksonXmlProperty(localName = "template", isAttribute = true) val template: String?, @JacksonXmlProperty(localName = "type", isAttribute = true) val type: String, + @JsonInclude(JsonInclude.Include.NON_NULL) + @JacksonXmlProperty(localName = "href", isAttribute = true) val href: String?, )