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?, )