diff --git a/src/main/kotlin/dev/usbharu/hideout/Application.kt b/src/main/kotlin/dev/usbharu/hideout/Application.kt index a582c15c..e5b64c34 100644 --- a/src/main/kotlin/dev/usbharu/hideout/Application.kt +++ b/src/main/kotlin/dev/usbharu/hideout/Application.kt @@ -1,5 +1,7 @@ package dev.usbharu.hideout +import com.fasterxml.jackson.annotation.JsonInclude +import com.fasterxml.jackson.databind.DeserializationFeature import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper import dev.usbharu.hideout.config.Config import dev.usbharu.hideout.config.ConfigData @@ -21,7 +23,7 @@ import io.ktor.server.auth.* import io.ktor.util.* import org.jetbrains.exposed.sql.Database import org.koin.ktor.ext.inject -import java.util.Base64 +import java.util.* fun main(args: Array): Unit = io.ktor.server.netty.EngineMain.main(args) @@ -30,19 +32,24 @@ fun main(args: Array): Unit = fun Application.module() { val module = org.koin.dsl.module { - single{ Database.connect( - url = "jdbc:h2:./test;MODE=POSTGRESQL", - driver = "org.h2.Driver", - ) } - single{ ConfigData( - environment.config.property("hideout.hostname").getString(), - jacksonObjectMapper() - ) } - single{UserRepository(get())} - single{UserAuthRepository(get())} - single{ UserAuthService(get(),get()) } + single { + Database.connect( + url = "jdbc:h2:./test;MODE=POSTGRESQL", + driver = "org.h2.Driver", + ) + } + single { + ConfigData( + environment.config.property("hideout.hostname").getString(), + jacksonObjectMapper().enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY) + .setSerializationInclusion(JsonInclude.Include.NON_EMPTY) + ) + } + single { UserRepository(get()) } + single { UserAuthRepository(get()) } + single { UserAuthService(get(), get()) } single { UserService(get()) } - single { ActivityPubUserService(get())} + single { ActivityPubUserService(get()) } } configureKoin(module) val configData by inject() @@ -59,7 +66,7 @@ fun Application.module() { configureSerialization() configureSockets() val activityPubUserService by inject() - user(userService,activityPubUserService) + user(userService, activityPubUserService) login() register(userAuthService) wellKnown(userService) diff --git a/src/main/kotlin/dev/usbharu/hideout/ap/Image.kt b/src/main/kotlin/dev/usbharu/hideout/ap/Image.kt index 481010bb..38d3cbbc 100644 --- a/src/main/kotlin/dev/usbharu/hideout/ap/Image.kt +++ b/src/main/kotlin/dev/usbharu/hideout/ap/Image.kt @@ -6,7 +6,7 @@ open class Image : Object { protected constructor() : super() constructor(type: List = emptyList(), name: String, mediaType: String?, url: String?) : super( - type, + add(type,"Image"), name ) { this.mediaType = mediaType diff --git a/src/main/kotlin/dev/usbharu/hideout/plugins/ActivityPub.kt b/src/main/kotlin/dev/usbharu/hideout/plugins/ActivityPub.kt index cf16abd4..2a4ca8db 100644 --- a/src/main/kotlin/dev/usbharu/hideout/plugins/ActivityPub.kt +++ b/src/main/kotlin/dev/usbharu/hideout/plugins/ActivityPub.kt @@ -8,7 +8,7 @@ import io.ktor.server.application.* import io.ktor.server.response.* suspend fun ApplicationCall.respondAp(message: T, status: HttpStatusCode = HttpStatusCode.OK) { - message.context += "https://www.w3.org/activitystreams" + message.context += "https://www.w3.org/ns/activitystreams" val activityJson = Config.configData.objectMapper.writeValueAsString(message) respondText(activityJson, ContentType.Application.Activity, status) } diff --git a/src/main/kotlin/dev/usbharu/hideout/service/ActivityPubUserService.kt b/src/main/kotlin/dev/usbharu/hideout/service/ActivityPubUserService.kt index 8e1cc67a..5d301f14 100644 --- a/src/main/kotlin/dev/usbharu/hideout/service/ActivityPubUserService.kt +++ b/src/main/kotlin/dev/usbharu/hideout/service/ActivityPubUserService.kt @@ -10,7 +10,7 @@ class ActivityPubUserService(private val userService: UserService) { val userUrl = "${Config.configData.hostname}/users/$name" return Person( emptyList(), - "Icon", + userEntity.name, userUrl, name, userEntity.description,