mirror of
https://github.com/InsanusMokrassar/MicroUtils.git
synced 2024-12-18 14:47:15 +00:00
parent
4d022f0480
commit
0d1aae0ef7
@ -1,28 +0,0 @@
|
|||||||
package dev.inmo.micro_utils.ktor.client
|
|
||||||
|
|
||||||
import dev.inmo.micro_utils.common.FileName
|
|
||||||
import io.ktor.client.HttpClient
|
|
||||||
import io.ktor.http.Headers
|
|
||||||
import io.ktor.utils.io.core.Input
|
|
||||||
import kotlinx.serialization.DeserializationStrategy
|
|
||||||
import kotlinx.serialization.StringFormat
|
|
||||||
|
|
||||||
data class UniUploadFileInfo(
|
|
||||||
val fileName: FileName,
|
|
||||||
val bytesAllocator: Input
|
|
||||||
)
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Will execute submitting of multipart data request
|
|
||||||
*
|
|
||||||
* @param data [Map] where keys will be used as names for multipart parts and values as values. If you will pass
|
|
||||||
* [dev.inmo.micro_utils.common.MPPFile] (File from JS or JVM platform). Also you may pass [UniUploadFileInfo] as value
|
|
||||||
* in case you wish to pass other source of multipart binary data than regular file
|
|
||||||
*/
|
|
||||||
expect suspend fun <T> HttpClient.uniupload(
|
|
||||||
url: String,
|
|
||||||
data: Map<String, Any>,
|
|
||||||
stringFormat: StringFormat,
|
|
||||||
resultDeserializer: DeserializationStrategy<T>,
|
|
||||||
headers: Headers = Headers.Empty
|
|
||||||
): T?
|
|
@ -1,25 +0,0 @@
|
|||||||
package dev.inmo.micro_utils.ktor.server
|
|
||||||
|
|
||||||
import io.ktor.http.HttpStatusCode
|
|
||||||
import io.ktor.server.application.ApplicationCall
|
|
||||||
import io.ktor.server.response.respond
|
|
||||||
|
|
||||||
suspend fun ApplicationCall.getParameterOrSendError(
|
|
||||||
field: String
|
|
||||||
) = parameters[field].also {
|
|
||||||
if (it == null) {
|
|
||||||
respond(HttpStatusCode.BadRequest, "Request must contains $field")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun ApplicationCall.getQueryParameter(
|
|
||||||
field: String
|
|
||||||
) = request.queryParameters[field]
|
|
||||||
|
|
||||||
suspend fun ApplicationCall.getQueryParameterOrSendError(
|
|
||||||
field: String
|
|
||||||
) = getQueryParameter(field).also {
|
|
||||||
if (it == null) {
|
|
||||||
respond(HttpStatusCode.BadRequest, "Request query parameters must contains $field")
|
|
||||||
}
|
|
||||||
}
|
|
@ -2,10 +2,22 @@ package dev.inmo.micro_utils.ktor.server
|
|||||||
|
|
||||||
import dev.inmo.micro_utils.common.*
|
import dev.inmo.micro_utils.common.*
|
||||||
import dev.inmo.micro_utils.coroutines.safely
|
import dev.inmo.micro_utils.coroutines.safely
|
||||||
|
import dev.inmo.micro_utils.ktor.common.*
|
||||||
|
import io.ktor.http.*
|
||||||
import io.ktor.http.content.*
|
import io.ktor.http.content.*
|
||||||
import io.ktor.server.application.ApplicationCall
|
import io.ktor.server.application.ApplicationCall
|
||||||
|
import io.ktor.server.application.call
|
||||||
|
import io.ktor.server.request.receive
|
||||||
import io.ktor.server.request.receiveMultipart
|
import io.ktor.server.request.receiveMultipart
|
||||||
|
import io.ktor.server.response.respond
|
||||||
|
import io.ktor.server.response.respondBytes
|
||||||
|
import io.ktor.server.routing.Route
|
||||||
|
import io.ktor.server.websocket.WebSocketServerSession
|
||||||
|
import io.ktor.util.pipeline.PipelineContext
|
||||||
import io.ktor.utils.io.core.*
|
import io.ktor.utils.io.core.*
|
||||||
|
import kotlinx.coroutines.flow.Flow
|
||||||
|
import kotlinx.serialization.DeserializationStrategy
|
||||||
|
import kotlinx.serialization.SerializationStrategy
|
||||||
|
|
||||||
suspend fun ApplicationCall.uniloadMultipart(
|
suspend fun ApplicationCall.uniloadMultipart(
|
||||||
onFormItem: (PartData.FormItem) -> Unit = {},
|
onFormItem: (PartData.FormItem) -> Unit = {},
|
||||||
@ -77,3 +89,23 @@ suspend fun ApplicationCall.uniloadMultipartFile(
|
|||||||
|
|
||||||
resultInput ?: error("Bytes has not been received")
|
resultInput ?: error("Bytes has not been received")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
suspend fun ApplicationCall.getParameterOrSendError(
|
||||||
|
field: String
|
||||||
|
) = parameters[field].also {
|
||||||
|
if (it == null) {
|
||||||
|
respond(HttpStatusCode.BadRequest, "Request must contains $field")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun ApplicationCall.getQueryParameter(
|
||||||
|
field: String
|
||||||
|
) = request.queryParameters[field]
|
||||||
|
|
||||||
|
suspend fun ApplicationCall.getQueryParameterOrSendError(
|
||||||
|
field: String
|
||||||
|
) = getQueryParameter(field).also {
|
||||||
|
if (it == null) {
|
||||||
|
respond(HttpStatusCode.BadRequest, "Request query parameters must contains $field")
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user