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
use bitcoind_request::{
client::Client as BitcoindRequestClient, client::Request as BitcoindRequestRequest,
};
use jsonrpc::{serde_json::value::RawValue, simple_http, Response as JsonRPCResponse};
pub struct Client {
pub bitcoind_request_client: BitcoindRequestClient,
}
pub struct Request<'a>(BitcoindRequestRequest<'a>);
impl<'a> Request<'a> {}
impl Client {
pub fn new(url: &str, user: &str, pass: &str) -> Result<Self, simple_http::Error> {
let bitcoind_request_client =
BitcoindRequestClient::new(url, user, pass).expect("failed to create client");
let client = Client {
bitcoind_request_client,
};
Ok(client)
}
pub fn build_request<'a>(
&self,
command: &'a str,
params: &'a Vec<Box<RawValue>>,
) -> Request<'a> {
let bitcoind_request: BitcoindRequestRequest =
self.bitcoind_request_client.build_request(command, ¶ms);
let request = Request(bitcoind_request);
request
}
pub fn send_request(&self, request: Request) -> Result<JsonRPCResponse, jsonrpc::Error> {
let response = self.bitcoind_request_client.send_request(request.0);
response
}
}