fixes of todos
This commit is contained in:
ktor
common
src
commonMain
kotlin
com
insanusmokrassar
postssystem
server
src
jvmMain
kotlin
com
insanusmokrassar
postssystem
ktor
utils/repos/ktor
client
src
commonMain
kotlin
com
insanusmokrassar
postssystem
utils
repos
server
src
jvmMain
kotlin
com
insanusmokrassar
postssystem
utils
repos
@ -2,12 +2,12 @@ package com.insanusmokrassar.postssystem.ktor.server
|
||||
|
||||
import com.insanusmokrassar.postssystem.ktor.standardKtorSerialFormat
|
||||
import io.ktor.application.ApplicationCall
|
||||
import io.ktor.application.call
|
||||
import io.ktor.http.HttpStatusCode
|
||||
import io.ktor.response.respond
|
||||
import io.ktor.response.respondBytes
|
||||
import io.ktor.util.toByteArray
|
||||
import kotlinx.serialization.DeserializationStrategy
|
||||
import kotlinx.serialization.SerializationStrategy
|
||||
import kotlinx.serialization.*
|
||||
|
||||
suspend fun <T> ApplicationCall.unianswer(
|
||||
answerSerializer: SerializationStrategy<T>,
|
||||
@ -26,6 +26,23 @@ suspend fun <T> ApplicationCall.uniload(
|
||||
request.receiveChannel().toByteArray()
|
||||
)
|
||||
|
||||
fun <T> ApplicationCall.uniloadFromQuery(
|
||||
parameterName: String,
|
||||
deserializer: DeserializationStrategy<T>
|
||||
): T? {
|
||||
return standardKtorSerialFormat.decodeFromHexString(
|
||||
deserializer,
|
||||
getQueryParameter(parameterName) ?: return null
|
||||
)
|
||||
}
|
||||
|
||||
suspend fun <T> ApplicationCall.uniloadFromQueryOrSendError(
|
||||
parameterName: String,
|
||||
deserializer: DeserializationStrategy<T>
|
||||
): T? = uniloadFromQuery(parameterName, deserializer) ?: null.also {
|
||||
respond(HttpStatusCode.BadRequest, "Request query parameters must contains $parameterName")
|
||||
}
|
||||
|
||||
suspend fun ApplicationCall.getParameterOrSendError(
|
||||
field: String
|
||||
) = parameters[field].also {
|
||||
@ -34,10 +51,14 @@ suspend fun ApplicationCall.getParameterOrSendError(
|
||||
}
|
||||
}
|
||||
|
||||
fun ApplicationCall.getQueryParameter(
|
||||
field: String
|
||||
) = request.queryParameters[field]
|
||||
|
||||
suspend fun ApplicationCall.getQueryParameterOrSendError(
|
||||
field: String
|
||||
) = request.queryParameters[field].also {
|
||||
) = getQueryParameter(field).also {
|
||||
if (it == null) {
|
||||
respond(HttpStatusCode.BadRequest, "Request query parametersmust contains $field")
|
||||
respond(HttpStatusCode.BadRequest, "Request query parameters must contains $field")
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user