parity on netstats
This commit is contained in:
@@ -8,7 +8,6 @@ authors = ["Marek Kotewicz <marek.kotewicz@gmail.com"]
|
||||
[lib]
|
||||
|
||||
[dependencies]
|
||||
rustc-serialize = "0.3"
|
||||
serde = "0.6.7"
|
||||
serde_macros = "0.6.10"
|
||||
serde_json = "0.6.0"
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
use std::sync::Arc;
|
||||
use rustc_serialize::hex::ToHex;
|
||||
use serde_json;
|
||||
use jsonrpc_core::*;
|
||||
use util::hash::*;
|
||||
use ethcore::client::*;
|
||||
use jsonrpc_core::*;
|
||||
use traits::{Eth, EthFilter};
|
||||
use types::{Block, as_value, from_value};
|
||||
|
||||
pub struct EthClient {
|
||||
client: Arc<Client>,
|
||||
@@ -27,7 +28,7 @@ impl Eth for EthClient {
|
||||
|
||||
fn author(&self, params: Params) -> Result<Value, Error> {
|
||||
match params {
|
||||
Params::None => Ok(Value::String(Address::new().to_hex())),
|
||||
Params::None => Ok(as_value(&Address::new())),
|
||||
_ => Err(Error::invalid_params())
|
||||
}
|
||||
}
|
||||
@@ -64,8 +65,15 @@ impl Eth for EthClient {
|
||||
Ok(Value::U64(0))
|
||||
}
|
||||
|
||||
fn block(&self, _: Params) -> Result<Value, Error> {
|
||||
Ok(Value::Null)
|
||||
fn block(&self, params: Params) -> Result<Value, Error> {
|
||||
if let Params::Array(ref arr) = params {
|
||||
if let [ref h, Value::Bool(ref include_transactions)] = arr as &[Value] {
|
||||
if let Ok(hash) = from_value::<H256>(h.clone()) {
|
||||
return Ok(as_value(&Block::default()))
|
||||
}
|
||||
}
|
||||
}
|
||||
Err(Error::invalid_params())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -91,6 +99,6 @@ impl EthFilter for EthFilterClient {
|
||||
}
|
||||
|
||||
fn filter_changes(&self, _: Params) -> Result<Value, Error> {
|
||||
Ok(Value::Array(vec![Value::String(self.client.chain_info().best_block_hash.to_hex())]))
|
||||
Ok(Value::Array(vec![as_value(&self.client.chain_info().best_block_hash)]))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
#![feature(custom_derive, custom_attribute, plugin)]
|
||||
#![feature(slice_patterns)]
|
||||
#![plugin(serde_macros)]
|
||||
|
||||
extern crate rustc_serialize;
|
||||
extern crate serde;
|
||||
extern crate serde_json;
|
||||
extern crate jsonrpc_core;
|
||||
extern crate jsonrpc_http_server;
|
||||
extern crate ethcore_util as util;
|
||||
|
||||
@@ -35,6 +35,7 @@ pub trait Eth: Sized + Send + Sync + 'static {
|
||||
delegate.add_method("eth_coinbase", Eth::author);
|
||||
delegate.add_method("eth_gasPrice", Eth::gas_price);
|
||||
delegate.add_method("eth_blockNumber", Eth::block_number);
|
||||
delegate.add_method("eth_getBlockByHash", Eth::block);
|
||||
delegate.add_method("eth_getBlockByNumber", Eth::block);
|
||||
delegate.add_method("eth_mining", Eth::is_mining);
|
||||
delegate.add_method("eth_hashrate", Eth::hashrate);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
use util::hash::*;
|
||||
use util::uint::*;
|
||||
|
||||
#[derive(Default)]
|
||||
#[derive(Default, Serialize)]
|
||||
pub struct Block {
|
||||
hash: H256,
|
||||
#[serde(rename="parentHash")]
|
||||
@@ -35,7 +35,7 @@ fn test_block_serialize() {
|
||||
use serde_json;
|
||||
|
||||
let block = Block::default();
|
||||
//let serialized = serde_json::to_string(&block).unwrap();
|
||||
//println!("s: {:?}", serialized);
|
||||
let serialized = serde_json::to_string(&block).unwrap();
|
||||
println!("s: {:?}", serialized);
|
||||
//assert!(false);
|
||||
}
|
||||
|
||||
@@ -1 +1,18 @@
|
||||
use serde::{Serialize, Deserialize, de};
|
||||
use serde_json::value::{Value, Serializer, Deserializer};
|
||||
|
||||
mod block;
|
||||
|
||||
pub fn as_value<S>(s: &S) -> Value where S: Serialize {
|
||||
let mut serializer = Serializer::new();
|
||||
// should never panic!
|
||||
s.serialize(&mut serializer).unwrap();
|
||||
serializer.unwrap()
|
||||
}
|
||||
|
||||
pub fn from_value<D>(value: Value) -> Result<D, <Deserializer as de::Deserializer>::Error> where D: Deserialize {
|
||||
let mut deserialier = Deserializer::new(value);
|
||||
Deserialize::deserialize(&mut deserialier)
|
||||
}
|
||||
|
||||
pub use self::block::Block;
|
||||
|
||||
Reference in New Issue
Block a user