#[derive(Debug, Clone)]
pub struct Block {
pub hash: String,
pub confirmations: i32,
pub size: u32,
pub strippedsize: u32,
pub weight: u32,
pub height: u32,
pub version: u32,
pub versionHex: String,
pub merkleroot: String,
pub time: u32,
pub mediantime: u32,
pub nonce: u32,
pub bits: String,
pub difficulty: f64,
pub chainwork: String,
pub nTx: u32,
pub previousblockhash: String,
pub nextblockhash: String,
pub tx: Vec<String>
}
impl Block {
pub fn new(json_str: &str) -> Block {
let json_val = json::parse(json_str).unwrap();
return Block {
hash: String::from(json_val["hash"].as_str().unwrap()),
confirmations: json_val["confirmations"].as_i32().unwrap(),
size: json_val["size"].as_u32().unwrap(),
strippedsize: json_val["strippedsize"].as_u32().unwrap(),
weight: json_val["weight"].as_u32().unwrap(),
height: json_val["height"].as_u32().unwrap(),
version: json_val["version"].as_u32().unwrap(),
versionHex: String::from(json_val["versionHex"].as_str().unwrap()),
merkleroot: String::from(json_val["merkleroot"].as_str().unwrap()),
time: json_val["time"].as_u32().unwrap(),
mediantime: json_val["mediantime"].as_u32().unwrap(),
nonce: json_val["nonce"].as_u32().unwrap(),
bits: String::from(json_val["bits"].as_str().unwrap()),
difficulty: json_val["difficulty"].as_f64().unwrap(),
chainwork: String::from(json_val["chainwork"].as_str().unwrap()),
nTx: json_val["nTx"].as_u32().unwrap(),
previousblockhash: if json_val.has_key("previousblockhash") {
String::from(json_val["previousblockhash"].as_str().unwrap())
} else {
String::from("")
},
nextblockhash: if json_val.has_key("nextblockhash") {
String::from(json_val["nextblockhash"].as_str().unwrap())
} else {
String::from("")
},
tx: json_val["tx"]
.members()
.map(|x| String::from(x.as_str().unwrap()))
.collect()
};
}
}