add unified way to make post and get requests from client

This commit is contained in:
2020-08-14 18:05:58 +06:00
parent 8c3a48db99
commit 6d6bed2eb0
5 changed files with 81 additions and 65 deletions
core/ktor/client/src/commonMain/kotlin/com/insanusmokrassar/postssystem/core/ktor/client
ktor/client/src/commonMain/kotlin/com/insanusmokrassar/postssystem/ktor/client

@ -0,0 +1,28 @@
package com.insanusmokrassar.postssystem.ktor.client
import com.insanusmokrassar.postssystem.ktor.standardKtorSerialFormat
import io.ktor.client.HttpClient
import io.ktor.client.request.get
import io.ktor.client.request.post
import kotlinx.serialization.*
typealias BodyPair<T> = Pair<SerializationStrategy<T>, T>
suspend fun <ResultType> HttpClient.uniget(
url: String,
resultDeserializer: DeserializationStrategy<ResultType>
) = get<ByteArray>(
url
).let {
standardKtorSerialFormat.load(resultDeserializer, it)
}
suspend fun <BodyType, ResultType> HttpClient.unipost(
url: String,
bodyInfo: BodyPair<BodyType>,
resultDeserializer: DeserializationStrategy<ResultType>
) = post<ByteArray>(url) {
body = standardKtorSerialFormat.dump(bodyInfo.first, bodyInfo.second)
}.let {
standardKtorSerialFormat.load(resultDeserializer, it)
}