Skip to content

Commit

Permalink
Add custom rules and adapters borsh
Browse files Browse the repository at this point in the history
  • Loading branch information
ajamaica committed May 11, 2022
1 parent 125e6d9 commit e1ce9b8
Showing 1 changed file with 15 additions and 4 deletions.
19 changes: 15 additions & 4 deletions solana/src/main/java/com/solana/networking/NetworkingRouter.kt
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import com.solana.networking.models.RPCError
import com.solana.networking.models.RpcRequest
import com.solana.networking.models.RpcResponse
import com.solana.vendor.borshj.Borsh
import com.solana.vendor.borshj.BorshRule
import com.squareup.moshi.JsonAdapter
import com.squareup.moshi.Moshi
import com.squareup.moshi.Types
Expand All @@ -27,24 +28,34 @@ sealed class NetworkingError(override val message: String?) : Exception(message)
data class decodingError(val rpcError: java.lang.Exception) : NetworkingError(rpcError.message)
}

class NetworkingRouterConfig(val rules: List<BorshRule<*>> = listOf(), val moshiAdapters: List<Object> = listOf())

class NetworkingRouter(
val endpoint: RPCEndpoint,
private val httpClient: OkHttpClient = OkHttpClient()
private val httpClient: OkHttpClient = OkHttpClient(),
private val config: NetworkingRouterConfig? = null
) {

private fun borsh(): Borsh {
val borsh = Borsh()
borsh.setRules(listOf(PublicKeyRule(), AccountInfoRule(), MintRule(), TokenSwapInfoRule()))
val rules = listOf(PublicKeyRule(), AccountInfoRule(), MintRule(), TokenSwapInfoRule()) + (config?.rules ?: listOf())
borsh.setRules(rules)
return borsh
}

private val moshi: Moshi by lazy {
Moshi.Builder()
val moshiBuilder = Moshi.Builder()
.add(PublicKeyJsonAdapter())
.add(MintJsonAdapter(borsh()))
.add(TokenSwapInfoJsonAdapter(borsh()))
.add(AccountInfoJsonAdapter(borsh()))
.addLast(KotlinJsonAdapterFactory()).build()

for (adapter in config?.moshiAdapters ?: listOf()) {
moshiBuilder.add(adapter)
}

moshiBuilder.addLast(KotlinJsonAdapterFactory())
moshiBuilder.build()
}

companion object {
Expand Down

0 comments on commit e1ce9b8

Please sign in to comment.