From 13ca419473547e340b9fa36eda1ac07a07a02162 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Fri, 21 May 2021 18:04:04 +0600 Subject: [PATCH] fixes in UnifiedRequester --- CHANGELOG.md | 4 ++ .../ktor/client/StandardHttpClientGetPost.kt | 45 +++++++++++-------- 2 files changed, 30 insertions(+), 19 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 53ee4bd0a00..a05cb100c8e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## 0.5.2 +* `Ktor`: + * `Client`: + * Fixes in `UnifiedRequester` + ## 0.5.1 * `Versions`: diff --git a/ktor/client/src/commonMain/kotlin/dev/inmo/micro_utils/ktor/client/StandardHttpClientGetPost.kt b/ktor/client/src/commonMain/kotlin/dev/inmo/micro_utils/ktor/client/StandardHttpClientGetPost.kt index a87e5ee9cf4..182f4eb66f7 100644 --- a/ktor/client/src/commonMain/kotlin/dev/inmo/micro_utils/ktor/client/StandardHttpClientGetPost.kt +++ b/ktor/client/src/commonMain/kotlin/dev/inmo/micro_utils/ktor/client/StandardHttpClientGetPost.kt @@ -15,30 +15,21 @@ class UnifiedRequester( suspend fun uniget( url: String, resultDeserializer: DeserializationStrategy - ): ResultType = client.get( - url - ).let { - serialFormat.decodeDefault(resultDeserializer, it) - } - + ): ResultType = client.uniget(url, resultDeserializer, serialFormat) fun encodeUrlQueryValue( serializationStrategy: SerializationStrategy, value: T - ) = serialFormat.encodeHex( - serializationStrategy, - value + ) = serializationStrategy.encodeUrlQueryValue( + value, + serialFormat ) suspend fun unipost( url: String, bodyInfo: BodyPair, resultDeserializer: DeserializationStrategy - ) = client.post(url) { - body = serialFormat.encodeDefault(bodyInfo.first, bodyInfo.second) - }.let { - serialFormat.decodeDefault(resultDeserializer, it) - } + ) = client.unipost(url, bodyInfo, resultDeserializer, serialFormat) fun createStandardWebsocketFlow( url: String, @@ -51,14 +42,30 @@ val defaultRequester = UnifiedRequester() suspend fun HttpClient.uniget( url: String, - resultDeserializer: DeserializationStrategy -) = defaultRequester.uniget(url, resultDeserializer) + resultDeserializer: DeserializationStrategy, + serialFormat: StandardKtorSerialFormat = standardKtorSerialFormat +) = get( + url +).let { + serialFormat.decodeDefault(resultDeserializer, it) +} -fun SerializationStrategy.encodeUrlQueryValue(value: T) = defaultRequester.encodeUrlQueryValue(this, value) +fun SerializationStrategy.encodeUrlQueryValue( + value: T, + serialFormat: StandardKtorSerialFormat = standardKtorSerialFormat +) = serialFormat.encodeHex( + this, + value +) suspend fun HttpClient.unipost( url: String, bodyInfo: BodyPair, - resultDeserializer: DeserializationStrategy -) = defaultRequester.unipost(url, bodyInfo, resultDeserializer) + resultDeserializer: DeserializationStrategy, + serialFormat: StandardKtorSerialFormat = standardKtorSerialFormat +) = post(url) { + body = serialFormat.encodeDefault(bodyInfo.first, bodyInfo.second) +}.let { + serialFormat.decodeDefault(resultDeserializer, it) +}