Skip to content

Commit

Permalink
Kotlin serializer on sockets and Removes Moshi (#110)
Browse files Browse the repository at this point in the history
* Fix Decoding tests

* Remove Moshi

* Rename RpcResponseSerializable to RpcResponse and RpcRequestSerializable to RpcRequest

* Use SocketResponse instead of RpcResponse

* get the height of previous block

* Fix getBlockTime on RX

* Remove getBlockTime

* Make RpcResponse an open class
  • Loading branch information
ajamaica authored Oct 25, 2022
1 parent cf88fa8 commit 9c88971
Show file tree
Hide file tree
Showing 87 changed files with 732 additions and 1,514 deletions.
2 changes: 1 addition & 1 deletion rxSolana/src/main/java/com/solana/rxsolana/api/Api.kt
Original file line number Diff line number Diff line change
Expand Up @@ -590,7 +590,7 @@ fun Api.simulateTransaction(transaction: String,
}
}

fun <T>Api.getProgramAccounts(serializer: KSerializer<T>, address: PublicKey): Single<List<ProgramAccountSerialized<T>>> {
fun <T>Api.getProgramAccounts(serializer: KSerializer<T>, address: PublicKey): Single<List<ProgramAccountSerialized<AccountInfo<T>>>> {
return Single.create { emitter ->
this.getProgramAccounts(serializer, address) { result ->
result.onSuccess {
Expand Down
8 changes: 4 additions & 4 deletions rxSolana/src/test/java/com/solana/rxsolana/api/Methods.kt
Original file line number Diff line number Diff line change
Expand Up @@ -72,13 +72,13 @@ class Methods {
Assert.assertNotNull(result)
}

@Test
/*@Test
fun TestGetBlockTime() {
val solana = Solana(HttpNetworkingRouter(RPCEndpoint.devnetSolana))
val solana = Solana(HttpNetworkingRouter(RPCEndpoint.mainnetBetaSolana))
val height = solana.api.getBlockHeight().blockingGet()
val result = solana.api.getBlockTime(height).blockingGet()
val result = solana.api.getBlockTime(height-1).blockingGet()
Assert.assertNotNull(result)
}
}*/

@Test
fun TestGetAccountInfo() {
Expand Down
1 change: 0 additions & 1 deletion solana/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ android {

dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation 'com.squareup.moshi:moshi-kotlin:1.12.0'
implementation 'com.squareup.okhttp3:okhttp:4.9.0'
implementation 'org.bitcoinj:bitcoinj-core:0.15.10'
implementation 'net.i2p.crypto:eddsa:0.3.0'
Expand Down
4 changes: 2 additions & 2 deletions solana/src/main/java/com/solana/actions/getMintData.kt
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,12 @@ fun Action.getMultipleMintDatas(
programId: PublicKey = TokenProgram.PROGRAM_ID,
onComplete: ((Result<Map<PublicKey, Mint>>) -> Unit)
){
this.api.getMultipleAccounts(mintAddresses, Mint::class.java) { result ->
this.api.getMultipleAccounts(Mint.serializer(), mintAddresses) { result ->
result.onSuccess { account ->
if(account.find { it?.owner == programId.toBase58()} == null) {
return@getMultipleAccounts onComplete(Result.failure(ResultError("Invalid mint owner")))
}
val values = account.mapNotNull { it?.data?.value }
val values = account.mapNotNull { it?.data }
if(values.size != mintAddresses.size) {
return@getMultipleAccounts onComplete(Result.failure(ResultError("Some of mint data are missing")))
}
Expand Down
8 changes: 1 addition & 7 deletions solana/src/main/java/com/solana/api/getAccountInfo.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,11 @@ package com.solana.api

import com.solana.core.PublicKey
import com.solana.models.RpcSendTransactionConfig
import com.solana.models.buffer.Buffer
import com.solana.models.buffer.BufferInfo
import com.solana.networking.*
import com.solana.networking.serialization.serializers.base64.BorshAsBase64JsonArraySerializer
import com.solana.networking.serialization.serializers.solana.AnchorAccountSerializer
import com.solana.networking.serialization.serializers.solana.SolanaResponseSerializer
import com.solana.vendor.ResultError
import com.solana.vendor.borshj.BorshCodable
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
import kotlinx.serialization.KSerializer
Expand All @@ -22,7 +19,7 @@ class AccountRequest(
commitment: String = Commitment.MAX.toString(),
length: Int? = null,
offset: Int? = length?.let { 0 }
) : RpcRequestSerializable() {
) : RpcRequest() {

constructor(account: String, transactionOptions: TransactionOptions) : this(account,
transactionOptions.encoding, commitment = transactionOptions.commitment.toString())
Expand All @@ -47,9 +44,6 @@ class AccountRequest(
data class AccountInfo<D>(val data: D?, val executable: Boolean,
val lamports: Long, val owner: String?, val rentEpoch: Long)

fun <D, T: BorshCodable> AccountInfo<D>.toBufferInfo() =
BufferInfo(data?.let { Buffer(data as T) }, executable, lamports, owner, rentEpoch)

fun <A> SolanaAccountSerializer(serializer: KSerializer<A>) =
AccountInfoSerializer(
BorshAsBase64JsonArraySerializer(
Expand Down
4 changes: 2 additions & 2 deletions solana/src/main/java/com/solana/api/getBalance.kt
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
package com.solana.api

import com.solana.core.PublicKey
import com.solana.networking.RpcRequestSerializable
import com.solana.networking.RpcRequest
import com.solana.networking.SolanaResponseSerializer
import com.solana.networking.makeRequestResult
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
import kotlinx.serialization.builtins.serializer
import kotlinx.serialization.json.*

class GetBalanceRequest(accountAddress: String) : RpcRequestSerializable() {
class GetBalanceRequest(accountAddress: String) : RpcRequest() {
override val method: String = "getBalance"
override val params = buildJsonArray {
add(accountAddress)
Expand Down
3 changes: 1 addition & 2 deletions solana/src/main/java/com/solana/api/getBlock.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package com.solana.api

import com.solana.models.*
import com.solana.networking.*
import com.squareup.moshi.Json
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
import kotlinx.serialization.Serializable
Expand All @@ -16,7 +15,7 @@ class GetBlockRequest(
commitment: String = "max",
length: Int? = null,
offset: Int? = length?.let { 0 }
) : RpcRequestSerializable() {
) : RpcRequest() {
override val method: String = "getBlock"
override val params = buildJsonArray {
add(slot)
Expand Down
4 changes: 2 additions & 2 deletions solana/src/main/java/com/solana/api/getBlockCommitment.kt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.solana.api

import com.solana.networking.RpcRequestSerializable
import com.solana.networking.RpcRequest
import com.solana.networking.makeRequestResult
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
Expand All @@ -9,7 +9,7 @@ import kotlinx.serialization.json.add
import kotlinx.serialization.json.buildJsonArray


class GetBlockCommitmentRequest(block: Long) : RpcRequestSerializable() {
class GetBlockCommitmentRequest(block: Long) : RpcRequest() {
override val method: String = "getBlockCommitment"
override val params = buildJsonArray {
add(block)
Expand Down
4 changes: 2 additions & 2 deletions solana/src/main/java/com/solana/api/getBlockHeight.kt
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package com.solana.api

import com.solana.networking.RpcRequestSerializable
import com.solana.networking.RpcRequest
import com.solana.networking.makeRequestResult
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
import kotlinx.serialization.builtins.serializer

class GetBlockHeightRequest : RpcRequestSerializable() {
class GetBlockHeightRequest : RpcRequest() {
override val method: String = "getBlockHeight"
}

Expand Down
4 changes: 2 additions & 2 deletions solana/src/main/java/com/solana/api/getBlockTime.kt
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
package com.solana.api

import com.solana.networking.RpcRequestSerializable
import com.solana.networking.RpcRequest
import com.solana.networking.makeRequestResult
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
import kotlinx.serialization.builtins.serializer
import kotlinx.serialization.json.add
import kotlinx.serialization.json.buildJsonArray

class GetBlockTimeRequest(block: Long) : RpcRequestSerializable() {
class GetBlockTimeRequest(block: Long) : RpcRequest() {
override val method: String = "getBlockTime"
override val params = buildJsonArray {
add(block)
Expand Down
4 changes: 2 additions & 2 deletions solana/src/main/java/com/solana/api/getClusterNodes.kt
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
package com.solana.api

import com.solana.core.PublicKey
import com.solana.networking.RpcRequestSerializable
import com.solana.networking.RpcRequest
import com.solana.networking.makeRequestResult
import com.solana.networking.serialization.serializers.solana.PublicKeyAsStringSerializer
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
import kotlinx.serialization.Serializable
import kotlinx.serialization.builtins.ListSerializer

class GetClusterNodesRequest : RpcRequestSerializable() {
class GetClusterNodesRequest : RpcRequest() {
override val method: String = "getClusterNodes"
}

Expand Down
4 changes: 2 additions & 2 deletions solana/src/main/java/com/solana/api/getConfirmedBlock.kt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.solana.api

import com.solana.models.RpcSendTransactionConfig
import com.solana.networking.RpcRequestSerializable
import com.solana.networking.RpcRequest
import com.solana.networking.makeRequestResult
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
Expand All @@ -14,7 +14,7 @@ class GetConfirmedBlockRequest(
transactionDetails: String = "full",
rewards: Boolean = true,
commitment: String = "finalized"
) : RpcRequestSerializable() {
) : RpcRequest() {
override val method: String = "getConfirmedBlock"
override val params = buildJsonArray {
add(slot)
Expand Down
4 changes: 2 additions & 2 deletions solana/src/main/java/com/solana/api/getConfirmedBlocks.kt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.solana.api

import com.solana.networking.RpcRequestSerializable
import com.solana.networking.RpcRequest
import com.solana.networking.makeRequestResult
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
Expand All @@ -9,7 +9,7 @@ import kotlinx.serialization.builtins.serializer
import kotlinx.serialization.json.add
import kotlinx.serialization.json.buildJsonArray

class GetConfirmedBlocksRequest(start: Long, end: Long? = null) : RpcRequestSerializable() {
class GetConfirmedBlocksRequest(start: Long, end: Long? = null) : RpcRequest() {
override val method: String = "getConfirmedBlocks"
override val params = buildJsonArray {
add(start)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.solana.api

import com.solana.core.PublicKey
import com.solana.networking.RpcRequestSerializable
import com.solana.networking.RpcRequest
import com.solana.networking.makeRequestResult
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
Expand All @@ -14,7 +14,7 @@ class GetConfirmedSignaturesForAddress2Request(
limit: Int? = null,
before: String? = null,
until: String? = null,
) : RpcRequestSerializable() {
) : RpcRequest() {
override val method: String = "getConfirmedSignaturesForAddress2"
override val params = buildJsonArray {
add(account.toString())
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package com.solana.api

import com.solana.networking.RpcRequestSerializable
import com.solana.networking.RpcRequest
import com.solana.networking.makeRequestResult
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
import kotlinx.serialization.json.add
import kotlinx.serialization.json.buildJsonArray

class GetConfirmedTransactionRequest(signature: String,) : RpcRequestSerializable() {
class GetConfirmedTransactionRequest(signature: String,) : RpcRequest() {
override val method: String = "getConfirmedTransaction"
override val params = buildJsonArray {
add(signature)
Expand Down
4 changes: 2 additions & 2 deletions solana/src/main/java/com/solana/api/getEpochInfo.kt
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package com.solana.api

import com.solana.networking.RpcRequestSerializable
import com.solana.networking.RpcRequest
import com.solana.networking.makeRequestResult
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
import kotlinx.serialization.Serializable

class GetEpochInfoRequest : RpcRequestSerializable() {
class GetEpochInfoRequest : RpcRequest() {
override val method: String = "getEpochInfo"
}

Expand Down
4 changes: 2 additions & 2 deletions solana/src/main/java/com/solana/api/getEpochSchedule.kt
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package com.solana.api

import com.solana.networking.RpcRequestSerializable
import com.solana.networking.RpcRequest
import com.solana.networking.makeRequestResult
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
import kotlinx.serialization.Serializable

class GetEpochScheduleRequest : RpcRequestSerializable() {
class GetEpochScheduleRequest : RpcRequest() {
override val method: String = "getEpochSchedule"
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.solana.api

import com.solana.networking.RpcRequestSerializable
import com.solana.networking.RpcRequest
import com.solana.networking.SolanaResponseSerializer
import com.solana.networking.makeRequestResult
import kotlinx.coroutines.CoroutineScope
Expand All @@ -9,7 +9,7 @@ import kotlinx.serialization.Serializable
import kotlinx.serialization.json.add
import kotlinx.serialization.json.buildJsonArray

class GetFeeCalculatorForBlockhashRequest(blockhash: String) : RpcRequestSerializable() {
class GetFeeCalculatorForBlockhashRequest(blockhash: String) : RpcRequest() {
override val method: String = "getFeeCalculatorForBlockhash"
override val params = buildJsonArray {
add(blockhash)
Expand Down
4 changes: 2 additions & 2 deletions solana/src/main/java/com/solana/api/getFeeRateGovernor.kt
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package com.solana.api

import com.solana.networking.RpcRequestSerializable
import com.solana.networking.RpcRequest
import com.solana.networking.SolanaResponseSerializer
import com.solana.networking.makeRequestResult
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
import kotlinx.serialization.Serializable

class GetFeeRateGovernorRequest : RpcRequestSerializable() {
class GetFeeRateGovernorRequest : RpcRequest() {
override val method: String = "getFeeRateGovernor"
}

Expand Down
4 changes: 2 additions & 2 deletions solana/src/main/java/com/solana/api/getFees.kt
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package com.solana.api

import com.solana.networking.RpcRequestSerializable
import com.solana.networking.RpcRequest
import com.solana.networking.SolanaResponseSerializer
import com.solana.networking.makeRequestResult
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
import kotlinx.serialization.Serializable

class GetFeesRequest : RpcRequestSerializable() {
class GetFeesRequest : RpcRequest() {
override val method: String = "getFees"
}

Expand Down
5 changes: 2 additions & 3 deletions solana/src/main/java/com/solana/api/getFirstAvailableBlock.kt
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
package com.solana.api

import com.solana.networking.RpcRequestSerializable
import com.solana.networking.SolanaResponseSerializer
import com.solana.networking.RpcRequest
import com.solana.networking.makeRequestResult
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
import kotlinx.serialization.builtins.serializer

class GetFirstAvailableBlockRequest : RpcRequestSerializable() {
class GetFirstAvailableBlockRequest : RpcRequest() {
override val method: String = "getFirstAvailableBlock"
}

Expand Down
4 changes: 2 additions & 2 deletions solana/src/main/java/com/solana/api/getGenesisHash.kt
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package com.solana.api

import com.solana.networking.RpcRequestSerializable
import com.solana.networking.RpcRequest
import com.solana.networking.makeRequestResult
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
import kotlinx.serialization.builtins.serializer

class GetGenesisHashBlockRequest : RpcRequestSerializable() {
class GetGenesisHashBlockRequest : RpcRequest() {
override val method: String = "getGenesisHash"
}

Expand Down
4 changes: 2 additions & 2 deletions solana/src/main/java/com/solana/api/getIdentity.kt
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
package com.solana.api

import com.solana.core.PublicKey
import com.solana.networking.RpcRequestSerializable
import com.solana.networking.RpcRequest
import com.solana.networking.makeRequestResult
import com.solana.networking.serialization.serializers.solana.PublicKeyAsStringSerializer
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
import kotlinx.serialization.Serializable

class GetIdentityBlockRequest : RpcRequestSerializable() {
class GetIdentityBlockRequest : RpcRequest() {
override val method: String = "getIdentity"
}

Expand Down
4 changes: 2 additions & 2 deletions solana/src/main/java/com/solana/api/getInflationReward.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package com.solana.api

import com.solana.core.PublicKey
import com.solana.models.RpcEpochConfig
import com.solana.networking.RpcRequestSerializable
import com.solana.networking.RpcRequest
import com.solana.networking.makeRequestResult
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
Expand All @@ -13,7 +13,7 @@ import kotlinx.serialization.json.*

class GetInflationRewardRequest(val addresses: List<PublicKey>,
val epoch: Long? = null,
val commitment: String? = null) : RpcRequestSerializable() {
val commitment: String? = null) : RpcRequest() {
override val method: String = "getInflationReward"
override val params = buildJsonArray {
addJsonArray {
Expand Down
Loading

0 comments on commit 9c88971

Please sign in to comment.