core/publicators/simple/server/src/jvmMain/kotlin/dev/inmo/postssystem/publicators/simple/server/SimplePublicatorRoutingConf...

33 lines
1.3 KiB
Kotlin

package dev.inmo.postssystem.publicators.simple.server
import dev.inmo.micro_utils.ktor.server.configurators.ApplicationRoutingConfigurator
import dev.inmo.micro_utils.ktor.server.unianswer
import dev.inmo.micro_utils.ktor.server.uniload
import dev.inmo.postssystem.features.posts.common.PostId
import dev.inmo.postssystem.features.publication.common.publicatorsRootPath
import dev.inmo.postssystem.features.publication.server.PublicationManager
import dev.inmo.postssystem.publicators.simple.common.simplePublicatorPublishPathPart
import dev.inmo.postssystem.publicators.simple.common.simplePublicatorRootPath
import io.ktor.server.application.call
import io.ktor.server.routing.*
import kotlinx.serialization.builtins.serializer
class SimplePublicatorRoutingConfigurator(
private val publicationManager: PublicationManager
) : ApplicationRoutingConfigurator.Element {
override fun Route.invoke() {
route(publicatorsRootPath) {
route(simplePublicatorRootPath) {
post(simplePublicatorPublishPathPart) {
val postId = call.uniload(PostId.serializer())
call.unianswer(
Unit.serializer(),
publicationManager.publish(postId)
)
}
}
}
}
}