From 680d3d211a254f7f28ef01e12d8951c05177fab6 Mon Sep 17 00:00:00 2001 From: Nadav Kohen Date: Tue, 29 May 2018 10:31:13 -0500 Subject: [PATCH] Added getmininginfo, getchaintips and getnetworkinfo functionality --- .../rpc/jsonmodels/NetworkResult.scala | 43 +++++++++++++++++++ .../rpc/jsonmodels/WalletResult.scala | 5 +++ .../rpc/serializers/JsonSerializers.scala | 25 +++++++++++ 3 files changed, 73 insertions(+) create mode 100644 rpc/src/main/scala/org/bitcoins/rpc/jsonmodels/NetworkResult.scala create mode 100644 rpc/src/main/scala/org/bitcoins/rpc/jsonmodels/WalletResult.scala create mode 100644 rpc/src/main/scala/org/bitcoins/rpc/serializers/JsonSerializers.scala diff --git a/rpc/src/main/scala/org/bitcoins/rpc/jsonmodels/NetworkResult.scala b/rpc/src/main/scala/org/bitcoins/rpc/jsonmodels/NetworkResult.scala new file mode 100644 index 0000000000..c39c251bf9 --- /dev/null +++ b/rpc/src/main/scala/org/bitcoins/rpc/jsonmodels/NetworkResult.scala @@ -0,0 +1,43 @@ +package org.bitcoins.rpc.jsonmodels + +import org.bitcoins.core.crypto.DoubleSha256Digest +import org.bitcoins.core.currency.Bitcoins + +sealed abstract class NetworkResult + +case class ChainTip( + height: Int, + hash: DoubleSha256Digest, + branchlen: Int, + status: String + ) extends NetworkResult + +case class GetNetworkInfoResult( + version: Int, + subversion: String, + protocolversion: Int, + localservices: String, + localrelay: Boolean, + timeoffset: Int, + networkactive: Boolean, + connections: Int, + networks: Array[Network], + relayfee: Bitcoins, + incrementalfee: Bitcoins, + localadresses: Option[Array[NetworkAddress]], + warnings: String + ) extends NetworkResult + +case class Network( + name: String, + limited: Boolean, + reachable: Boolean, + proxy: String, + proxy_randomize_credentials: Boolean + ) extends NetworkResult + +case class NetworkAddress( + address: String, + port: Int, + score: Int + ) extends NetworkResult \ No newline at end of file diff --git a/rpc/src/main/scala/org/bitcoins/rpc/jsonmodels/WalletResult.scala b/rpc/src/main/scala/org/bitcoins/rpc/jsonmodels/WalletResult.scala new file mode 100644 index 0000000000..dde1bdb7a9 --- /dev/null +++ b/rpc/src/main/scala/org/bitcoins/rpc/jsonmodels/WalletResult.scala @@ -0,0 +1,5 @@ +package org.bitcoins.rpc.jsonmodels + +class WalletResult { + +} diff --git a/rpc/src/main/scala/org/bitcoins/rpc/serializers/JsonSerializers.scala b/rpc/src/main/scala/org/bitcoins/rpc/serializers/JsonSerializers.scala new file mode 100644 index 0000000000..0ebe408f28 --- /dev/null +++ b/rpc/src/main/scala/org/bitcoins/rpc/serializers/JsonSerializers.scala @@ -0,0 +1,25 @@ +package org.bitcoins.rpc.serializers + +import org.bitcoins.core.crypto.DoubleSha256Digest +import org.bitcoins.core.currency.Bitcoins +import org.bitcoins.rpc.jsonmodels._ +import org.bitcoins.rpc.serializers.JsonReaders._ +import play.api.libs.json.{Json, Reads} + +object JsonSerializers { + // Internal Types + implicit val doubleSha256DigestReads: Reads[DoubleSha256Digest] = DoubleSha256DigestReads + implicit val bitcoinsReads: Reads[Bitcoins] = BitcoinsReads + + // Network Models + implicit val networkReads: Reads[Network] = Json.reads[Network] + implicit val networkAddressReads: Reads[NetworkAddress] = Json.reads[NetworkAddress] + implicit val networkInfoReads: Reads[GetNetworkInfoResult] = Json.reads[GetNetworkInfoResult] + + implicit val chainTipReads: Reads[ChainTip] = Json.reads[ChainTip] + + // Mining Models + implicit val minginInfoReads: Reads[GetMiningInfoResult] = Json.reads[GetMiningInfoResult] + + // Wallet Models +} \ No newline at end of file