Add Ws Json rpc client and command line utils

This commit is contained in:
Kristoffer Ström
2016-09-20 12:19:07 +02:00
committed by arkpar
parent 2226324495
commit 4e3f8bab10
14 changed files with 796 additions and 7 deletions

View File

@@ -22,7 +22,7 @@ use v1::types::{U256, TransactionRequest, RichRawTransaction, H160, H256, H520,
use v1::helpers;
/// Confirmation waiting in a queue
#[derive(Debug, Clone, Eq, PartialEq, Hash, Serialize)]
#[derive(Debug, Clone, Eq, PartialEq, Hash, Serialize, Deserialize)]
pub struct ConfirmationRequest {
/// Id of this confirmation
pub id: U256,
@@ -39,8 +39,24 @@ impl From<helpers::ConfirmationRequest> for ConfirmationRequest {
}
}
impl fmt::Display for ConfirmationRequest {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "id: {:?}, {}", self.id, self.payload)
}
}
impl fmt::Display for ConfirmationPayload {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match self {
&ConfirmationPayload::Transaction(ref transaction)
=> write!(f, "{}", transaction),
&ConfirmationPayload::Sign(_) => write!(f, "TODO: data"),
}
}
}
/// Sign request
#[derive(Debug, Clone, Eq, PartialEq, Hash, Serialize)]
#[derive(Debug, Clone, Eq, PartialEq, Hash, Serialize, Deserialize)]
pub struct SignRequest {
/// Address
pub address: H160,
@@ -102,7 +118,7 @@ impl Serialize for ConfirmationResponse {
}
/// Confirmation payload, i.e. the thing to be confirmed
#[derive(Debug, Clone, Eq, PartialEq, Hash, Serialize)]
#[derive(Debug, Clone, Eq, PartialEq, Hash, Serialize, Deserialize)]
pub enum ConfirmationPayload {
/// Send Transaction
#[serde(rename="sendTransaction")]
@@ -136,7 +152,7 @@ impl From<helpers::ConfirmationPayload> for ConfirmationPayload {
}
/// Possible modifications to the confirmed transaction sent by `Trusted Signer`
#[derive(Debug, PartialEq, Deserialize)]
#[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct TransactionModification {
/// Modified gas price
@@ -290,4 +306,3 @@ mod tests {
});
}
}

View File

@@ -19,6 +19,8 @@
use v1::types::{Bytes, H160, U256};
use v1::helpers;
use std::fmt;
/// Transaction request coming from RPC
#[derive(Debug, Clone, Default, Eq, PartialEq, Hash, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
@@ -40,6 +42,15 @@ pub struct TransactionRequest {
pub nonce: Option<U256>,
}
impl fmt::Display for TransactionRequest {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{:?} from {:?} to {:?}",
self.value.unwrap_or(U256::from(0)),
self.from,
self.to)
}
}
impl From<helpers::TransactionRequest> for TransactionRequest {
fn from(r: helpers::TransactionRequest) -> Self {
TransactionRequest {
@@ -192,4 +203,3 @@ mod tests {
assert!(deserialized.is_err(), "Should be error because to is empty");
}
}

View File

@@ -15,6 +15,8 @@
// along with Parity. If not, see <http://www.gnu.org/licenses/>.
use std::str::FromStr;
use std::fmt;
use rustc_serialize::hex::ToHex;
use serde;
use util::{U256 as EthU256, U128 as EthU128, Uint};
@@ -46,6 +48,12 @@ macro_rules! impl_uint {
}
}
impl fmt::LowerHex for $name {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{:#x}", self.0)
}
}
impl serde::Serialize for $name {
fn serialize<S>(&self, serializer: &mut S) -> Result<(), S::Error> where S: serde::Serializer {
serializer.serialize_str(&format!("0x{}", self.0.to_hex()))