Skip to content

Commit

Permalink
Merge pull request #59 from icerockdev/develop
Browse files Browse the repository at this point in the history
Release 0.9.2
  • Loading branch information
anton6tak authored Sep 23, 2021
2 parents e910ea2 + 18762a6 commit 2ff9920
Show file tree
Hide file tree
Showing 6 changed files with 17 additions and 10 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ allprojects {
project build.gradle
```groovy
dependencies {
commonMainApi("dev.icerock.moko:web3:0.9.1")
commonMainApi("dev.icerock.moko:web3:0.9.2")
}
```

Expand Down
2 changes: 1 addition & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ kbignumVersion = "2.2.0"
klockVersion = "2.2.2"
ktorClientVersion = "1.6.1"
mokoTestVersion = "0.4.0"
mokoWeb3Version = "0.9.1"
mokoWeb3Version = "0.9.2"
multidexVersion = "2.0.1"

[libraries]
Expand Down
12 changes: 9 additions & 3 deletions web3/src/commonMain/kotlin/dev.icerock.moko.web3/Web3.kt
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import io.ktor.client.request.url
import kotlinx.serialization.DeserializationStrategy
import kotlinx.serialization.decodeFromString
import kotlinx.serialization.encodeToString
import kotlinx.serialization.SerializationStrategy
import kotlinx.serialization.json.Json
import kotlinx.serialization.json.JsonElement
import kotlinx.serialization.json.JsonObject
Expand All @@ -36,7 +37,7 @@ class Web3 @DelicateWeb3Api constructor(
endpointUrl = endpointUrl
)

override suspend fun <T, R> executeBatch(vararg requests: Web3RpcRequest<T, R>): List<R> {
override suspend fun <R> executeBatch(requests: List<Web3RpcRequest<*, R>>): List<R> {
// Used later for logging if exception
val rawRequests = requests
.mapIndexed { index, web3Request ->
Expand All @@ -50,9 +51,10 @@ class Web3 @DelicateWeb3Api constructor(
val encodedToStringBody = rawRequests
.mapIndexed { index, request ->
val encodedParams = request.params.map { param ->
val (value, serializer) = unsafeCast(param, requests[index].paramsSerializer)
json.encodeToJsonElement(
serializer = requests[index].paramsSerializer,
value = param
serializer = serializer,
value = value
)
}
json.encodeToJsonElement(
Expand Down Expand Up @@ -116,4 +118,8 @@ class Web3 @DelicateWeb3Api constructor(
)
}
}

@Suppress("UNCHECKED_CAST")
private inline fun <T> unsafeCast(value: T, serializer: SerializationStrategy<*>): Pair<T, SerializationStrategy<T>> =
value to (serializer as SerializationStrategy<T>)
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,5 @@ interface Web3Executor {
*
* It is allowed to throw something else if it is not related to Web3 (internet exceptions, etc.)
*/
suspend fun <T, R> executeBatch(vararg requests: Web3RpcRequest<T, R>): List<R>
suspend fun <R> executeBatch(requests: List<Web3RpcRequest<*, R>>): List<R>
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import dev.icerock.moko.web3.crypto.KeccakParameter
import dev.icerock.moko.web3.crypto.digestKeccak
import dev.icerock.moko.web3.crypto.toHex
import dev.icerock.moko.web3.requests.Web3Requests
import dev.icerock.moko.web3.requests.executeBatch
import io.ktor.utils.io.core.toByteArray
import kotlinx.serialization.DeserializationStrategy
import kotlinx.serialization.KSerializer
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,16 @@
package dev.icerock.moko.web3.requests

import com.soywiz.kbignum.BigInt
import dev.icerock.moko.web3.BlockState
import dev.icerock.moko.web3.TransactionHash
import dev.icerock.moko.web3.WalletAddress
import dev.icerock.moko.web3.Web3Executor
import dev.icerock.moko.web3.*
import dev.icerock.moko.web3.entity.Transaction
import dev.icerock.moko.web3.entity.TransactionReceipt
import kotlinx.serialization.KSerializer
import kotlinx.serialization.json.JsonElement


suspend fun <T> Web3Executor.executeBatch(vararg requests: Web3RpcRequest<*, T>): List<T> =
executeBatch(requests.toList())

suspend fun Web3Executor.getTransaction(
transactionHash: TransactionHash
): Transaction = executeBatch(Web3Requests.getTransaction(transactionHash)).first()
Expand Down

0 comments on commit 2ff9920

Please sign in to comment.