Skip to content

Commit

Permalink
even better
Browse files Browse the repository at this point in the history
  • Loading branch information
Funkatronics committed Sep 8, 2023
1 parent 462e8b3 commit f63e68a
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 6 deletions.
Original file line number Diff line number Diff line change
@@ -1,26 +1,22 @@
package com.funkatronics.networking

import com.funkatronics.rpccore.*
import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.KSerializer
import kotlinx.serialization.json.Json

class Rpc20Driver(private val url: String,
private val httpDriver: HttpNetworkDriver) : JsonRpcDriver {

@OptIn(ExperimentalSerializationApi::class)
private val json = Json {
encodeDefaults = true
ignoreUnknownKeys = true
explicitNulls = false
}

override suspend fun <R> makeRequest(request: RpcRequest, resultSerializer: KSerializer<R>): Rpc20Response<R> =
httpDriver.makeHttpRequest(
HttpPostRequest(
url = url,
properties = mapOf("Content-Type" to "application/json; charset=utf-8"),
body = json.encodeToString(RpcRequestSerializer, request)
body = json.encodeToString(RpcRequestPolymorphicSerializer, request)
)
).run {
try {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.funkatronics.rpccore

import kotlinx.serialization.DeserializationStrategy
import kotlinx.serialization.EncodeDefault
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.*

Expand All @@ -26,10 +27,11 @@ open class JsonRpc20Request (
override val params: JsonElement? = null,
override val id: String,
) : RpcRequest {
@EncodeDefault
override val jsonrpc: String = "2.0"
}

object RpcRequestSerializer : JsonContentPolymorphicSerializer<RpcRequest>(RpcRequest::class) {
object RpcRequestPolymorphicSerializer : JsonContentPolymorphicSerializer<RpcRequest>(RpcRequest::class) {
override fun selectDeserializer(element: JsonElement): DeserializationStrategy<RpcRequest> {
return RpcRequest.serializer()
}
Expand Down

0 comments on commit f63e68a

Please sign in to comment.