update ktor utils

This commit is contained in:
2020-09-26 21:42:05 +06:00
parent fe37f6584e
commit 6f46413a90
13 changed files with 109 additions and 55 deletions

View File

@@ -21,3 +21,4 @@ fun buildStandardUrl(
subpart: String,
vararg parameters: QueryParam
) = buildStandardUrl(basePart, subpart, parameters.toList())

View File

@@ -1,6 +0,0 @@
package dev.inmo.micro_utils.ktor.common
import kotlinx.serialization.builtins.SetSerializer
import kotlinx.serialization.builtins.serializer
val setIdsSerializer = SetSerializer(String.serializer())

View File

@@ -1,6 +1,6 @@
package dev.inmo.micro_utils.ktor.common
private val schemaRegex = Regex("[^:]*//")
private val schemaRegex = Regex("^[^:]*://")
val String.asCorrectWebSocketUrl: String
get() = if (startsWith("ws")) {

View File

@@ -11,7 +11,7 @@ val List<QueryParam>.asUrlQuery: String
fun String.includeQueryParams(
queryParams: QueryParams
): String = "$this${if (contains("?")) "&" else "?"}${queryParams.asUrlQuery}"
): String = "$this${if(queryParams.isNotEmpty()) "${if (contains("?")) "&" else "?"}${queryParams.asUrlQuery}" else ""}"
fun String.includeQueryParams(
queryParams: List<QueryParam>

View File

@@ -1,5 +1,32 @@
package dev.inmo.micro_utils.ktor.common
import kotlinx.serialization.*
import kotlinx.serialization.cbor.Cbor
val standardKtorSerialFormat = Cbor
typealias StandardKtorSerialFormat = BinaryFormat
typealias StandardKtorSerialInputData = ByteArray
val standardKtorSerialFormat: StandardKtorSerialFormat = Cbor { }
inline fun <T> StandardKtorSerialFormat.decodeDefault(
deserializationStrategy: DeserializationStrategy<T>,
input: StandardKtorSerialInputData
): T = decodeFromByteArray(deserializationStrategy, input)
inline fun <T> StandardKtorSerialFormat.encodeDefault(
serializationStrategy: SerializationStrategy<T>,
data: T
): StandardKtorSerialInputData = encodeToByteArray(serializationStrategy, data)
val cbor = Cbor {}
inline fun <T> StandardKtorSerialFormat.decodeHex(
deserializationStrategy: DeserializationStrategy<T>,
input: String
): T = decodeFromHexString(deserializationStrategy, input)
inline fun <T> StandardKtorSerialFormat.encodeHex(
serializationStrategy: SerializationStrategy<T>,
data: T
): String = encodeToHexString(serializationStrategy, data)

View File

@@ -1,7 +0,0 @@
package dev.inmo.micro_utils.ktor.common
const val clientWebsocketHelloMessage = "Start getting of updates"
const val serverWebsocketHelloMessage = "Accepted"
const val serverWebsocketNewMessageMessage = "NewMessage"
const val websocketFinalizationMessage = "Final"