1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
use crate::client::Client;
use crate::command::request::request;
use crate::command::CallableCommand;
use crate::Blockhash;
use crate::BlockhashHexEncoded;
use serde::Deserialize;
use serde::Serialize;
use serde_json::value::{to_raw_value, RawValue};
pub struct GetBestBlockHashCommand {
blockhash_hex_encoded: BlockhashHexEncoded,
}
impl GetBestBlockHashCommand {
pub fn new(blockhash_hex_encoded: BlockhashHexEncoded) -> Self {
GetBestBlockHashCommand {
blockhash_hex_encoded,
}
}
}
#[derive(Serialize, Deserialize, Debug)]
pub struct GetBestBlockHashCommandResponse(pub Blockhash);
impl CallableCommand for GetBestBlockHashCommand {
type Response = GetBestBlockHashCommandResponse;
fn call(&self, client: &Client) -> Result<Self::Response, jsonrpc::Error> {
let blockhash_arg = &self.blockhash_hex_encoded.0;
let command = "getbestblockhash";
let params: Vec<Box<RawValue>> = vec![];
let r = request(client, command, params);
let response: GetBestBlockHashCommandResponse = r.result()?;
Ok(response)
}
}