core/core/ktor/server/src/jvmMain/kotlin/dev/inmo/postssystem/core/ktor/server/content/WriteContentRepoRoutingConfigurator.kt

44 lines
1.5 KiB
Kotlin
Raw Normal View History

2020-11-25 08:08:45 +00:00
package dev.inmo.postssystem.core.ktor.server.content
2020-08-14 06:06:37 +00:00
2020-11-25 08:08:45 +00:00
import dev.inmo.postssystem.core.content.*
import dev.inmo.postssystem.core.content.api.WriteContentRepo
import dev.inmo.postssystem.core.ktor.*
2020-11-25 07:53:15 +00:00
import dev.inmo.micro_utils.ktor.server.*
import dev.inmo.micro_utils.ktor.server.configurators.ApplicationRoutingConfigurator
2020-08-14 06:06:37 +00:00
import io.ktor.application.call
import io.ktor.routing.Route
import io.ktor.routing.post
import kotlinx.serialization.builtins.nullable
import kotlinx.serialization.builtins.serializer
fun Route.configureWriteContentRepoRoutes(
proxyTo: WriteContentRepo
) {
includeWebsocketHandling(contentCreatedFlowRoute, proxyTo.contentCreatedFlow, RegisteredContent.serializer())
includeWebsocketHandling(contentDeletedFlowRoute, proxyTo.contentDeletedFlow, RegisteredContent.serializer())
2020-08-14 06:06:37 +00:00
post(registerContentRoute) {
2020-08-14 12:30:09 +00:00
val content = call.uniload(Content.serializer())
2020-08-14 06:06:37 +00:00
val registered = proxyTo.registerContent(content)
2020-08-14 12:30:09 +00:00
call.unianswer(
RegisteredContent.serializer().nullable,
registered
2020-08-14 06:06:37 +00:00
)
}
post(deleteContentRoute) {
2020-08-14 12:30:09 +00:00
val contentId = call.uniload(ContentId.serializer())
2020-08-14 06:06:37 +00:00
val isDeleted = proxyTo.deleteContent(contentId)
2020-08-14 12:30:09 +00:00
call.unianswer(
Boolean.serializer(),
isDeleted
2020-08-14 06:06:37 +00:00
)
}
}
class WriteContentRepoRoutingConfigurator(
private val proxyTo: WriteContentRepo
) : ApplicationRoutingConfigurator.Element {
override fun Route.invoke() {
configureWriteContentRepoRoutes(proxyTo)
}
}