bitcoin_node_query/
client.rs1use bitcoind_request::{
2 client::Client as BitcoindRequestClient, client::Request as BitcoindRequestRequest,
3};
4use jsonrpc::{serde_json::value::RawValue, simple_http, Response as JsonRPCResponse};
5
6pub struct Client {
7 pub bitcoind_request_client: BitcoindRequestClient,
8}
9
10pub struct Request<'a>(BitcoindRequestRequest<'a>);
11
12impl<'a> Request<'a> {}
13
14impl Client {
15 pub fn new(url: &str, user: &str, pass: &str) -> Result<Self, simple_http::Error> {
17 let bitcoind_request_client =
18 BitcoindRequestClient::new(url, user, pass).expect("failed to create client");
19 let client = Client {
20 bitcoind_request_client,
21 };
22 Ok(client)
23 }
24 pub fn build_request<'a>(
25 &self,
26 command: &'a str,
27 params: &'a Vec<Box<RawValue>>,
28 ) -> Request<'a> {
29 let bitcoind_request: BitcoindRequestRequest =
30 self.bitcoind_request_client.build_request(command, ¶ms);
31 let request = Request(bitcoind_request);
32 request
33 }
34 pub fn send_request(&self, request: Request) -> Result<JsonRPCResponse, jsonrpc::Error> {
35 let response = self.bitcoind_request_client.send_request(request.0);
36 response
37 }
38}