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