Skip to content

Commit 54a427f

Browse files
authored
Merge pull request #180 from Start9Labs/dependencies/jsonrpc
updates to newer jsonrpc dependencies containing swappable transports
2 parents 27dd8be + 9d18340 commit 54a427f

File tree

5 files changed

+34
-28
lines changed

5 files changed

+34
-28
lines changed

client/Cargo.toml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,24 +4,24 @@ version = "0.13.0"
44
authors = [
55
"Steven Roose <[email protected]>",
66
"Jean Pierre Dudey <[email protected]>",
7-
"Dawid Ciężarkiewicz <[email protected]>"
7+
"Dawid Ciężarkiewicz <[email protected]>",
88
]
99
license = "CC0-1.0"
1010
homepage = "https://github.com/rust-bitcoin/rust-bitcoincore-rpc/"
1111
repository = "https://github.com/rust-bitcoin/rust-bitcoincore-rpc/"
1212
description = "RPC client library for the Bitcoin Core JSON-RPC API."
13-
keywords = [ "crypto", "bitcoin", "bitcoin-core", "rpc" ]
13+
keywords = ["crypto", "bitcoin", "bitcoin-core", "rpc"]
1414
readme = "README.md"
1515

1616
[lib]
1717
name = "bitcoincore_rpc"
1818
path = "src/lib.rs"
1919

2020
[dependencies]
21-
bitcoincore-rpc-json = { version = "0.13.0", path = "../json"}
21+
bitcoincore-rpc-json = { version = "0.13.0", path = "../json" }
2222

2323
log = "0.4.5"
24-
jsonrpc = "0.11"
24+
jsonrpc = "0.12.0"
2525

2626
# Used for deserialization of JSON.
2727
serde = "1"

client/examples/test_against_node.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ fn main_result() -> Result<(), Error> {
2323
let user = args.next().expect("no user given");
2424
let pass = args.next().expect("no pass given");
2525

26-
let rpc = Client::new(url, Auth::UserPass(user, pass)).unwrap();
26+
let rpc = Client::new(&url, Auth::UserPass(user, pass)).unwrap();
2727

2828
let _blockchain_info = rpc.get_blockchain_info()?;
2929

client/src/client.rs

Lines changed: 26 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1087,29 +1087,27 @@ pub struct Client {
10871087

10881088
impl fmt::Debug for Client {
10891089
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
1090-
write!(
1091-
f,
1092-
"bitcoincore_rpc::Client(jsonrpc::Client(last_nonce={}))",
1093-
self.client.last_nonce()
1094-
)
1090+
write!(f, "bitcoincore_rpc::Client({:?})", self.client)
10951091
}
10961092
}
10971093

10981094
impl Client {
10991095
/// Creates a client to a bitcoind JSON-RPC server.
11001096
///
11011097
/// Can only return [Err] when using cookie authentication.
1102-
pub fn new(url: String, auth: Auth) -> Result<Self> {
1098+
pub fn new(url: &str, auth: Auth) -> Result<Self> {
11031099
let (user, pass) = auth.get_user_pass()?;
1104-
Ok(Client {
1105-
client: jsonrpc::client::Client::new(url, user, pass),
1106-
})
1100+
jsonrpc::client::Client::simple_http(url, user, pass)
1101+
.map(|client| Client {
1102+
client,
1103+
})
1104+
.map_err(|e| super::error::Error::JsonRpc(e.into()))
11071105
}
11081106

1109-
/// Create a new Client.
1107+
/// Create a new Client using the given [jsonrpc::Client].
11101108
pub fn from_jsonrpc(client: jsonrpc::client::Client) -> Client {
11111109
Client {
1112-
client: client,
1110+
client,
11131111
}
11141112
}
11151113

@@ -1126,14 +1124,22 @@ impl RpcApi for Client {
11261124
cmd: &str,
11271125
args: &[serde_json::Value],
11281126
) -> Result<T> {
1129-
let req = self.client.build_request(&cmd, &args);
1127+
let raw_args: Vec<_> = args
1128+
.iter()
1129+
.map(|a| {
1130+
let json_string = serde_json::to_string(a)?;
1131+
serde_json::value::RawValue::from_string(json_string) // we can't use to_raw_value here due to compat with Rust 1.29
1132+
})
1133+
.map(|a| a.map_err(|e| Error::Json(e)))
1134+
.collect::<Result<Vec<_>>>()?;
1135+
let req = self.client.build_request(&cmd, &raw_args);
11301136
if log_enabled!(Debug) {
11311137
debug!(target: "bitcoincore_rpc", "JSON-RPC request: {} {}", cmd, serde_json::Value::from(args));
11321138
}
11331139

1134-
let resp = self.client.send_request(&req).map_err(Error::from);
1140+
let resp = self.client.send_request(req).map_err(Error::from);
11351141
log_response(cmd, &resp);
1136-
Ok(resp?.into_result()?)
1142+
Ok(resp?.result()?)
11371143
}
11381144
}
11391145

@@ -1151,7 +1157,12 @@ fn log_response(cmd: &str, resp: &Result<jsonrpc::Response>) {
11511157
debug!(target: "bitcoincore_rpc", "JSON-RPC error for {}: {:?}", cmd, e);
11521158
}
11531159
} else if log_enabled!(Trace) {
1154-
let result = resp.result.as_ref().unwrap_or(&serde_json::Value::Null);
1160+
// we can't use to_raw_value here due to compat with Rust 1.29
1161+
let def = serde_json::value::RawValue::from_string(
1162+
serde_json::Value::Null.to_string(),
1163+
)
1164+
.unwrap();
1165+
let result = resp.result.as_ref().unwrap_or(&def);
11551166
trace!(target: "bitcoincore_rpc", "JSON-RPC response for {}: {}", cmd, result);
11561167
}
11571168
}

contrib/test.sh

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,13 @@ echo "PATH: \"$PATH\""
1212
if [ "$TRAVIS_RUST_VERSION" = "1.29.0" ]; then
1313
cargo generate-lockfile --verbose
1414

15-
# hyper depends on log 0.3 while we depnd on 0.4, so cargo doesn't know which one to pin
16-
LOG_4_PATCH="$(cargo update --package "log" --precise "0.4.13" 2>&1 | sed -n "s/.*log:0.4.\([0-9]*\)/\1/p")"
17-
cargo update --package "log:0.4.$LOG_4_PATCH" --precise "0.4.13"
18-
15+
cargo update --verbose --package "log" --precise "0.4.13"
1916
cargo update --verbose --package "cc" --precise "1.0.41"
2017
cargo update --verbose --package "cfg-if" --precise "0.1.9"
21-
cargo update --verbose --package "unicode-normalization" --precise "0.1.9"
2218
cargo update --verbose --package "serde_json" --precise "1.0.39"
2319
cargo update --verbose --package "serde" --precise "1.0.98"
2420
cargo update --verbose --package "serde_derive" --precise "1.0.98"
2521
cargo update --verbose --package "byteorder" --precise "1.3.4"
26-
cargo update --verbose --package "unicode-bidi" --precise "0.3.4"
2722
fi
2823

2924
if [ -n "$RUSTFMTCHECK" ]; then

integration_test/src/main.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ fn main() {
127127
let rpc_url = format!("{}/wallet/testwallet", get_rpc_url());
128128
let auth = get_auth();
129129

130-
let cl = Client::new(rpc_url, auth).unwrap();
130+
let cl = Client::new(&rpc_url, auth).unwrap();
131131

132132
test_get_network_info(&cl);
133133
unsafe { VERSION = cl.version().unwrap() };
@@ -969,7 +969,7 @@ fn test_create_wallet(cl: &Client) {
969969
assert_eq!(result.warning, expected_warning);
970970

971971
let wallet_client_url = format!("{}{}{}", get_rpc_url(), "/wallet/", wallet_param.name);
972-
let wallet_client = Client::new(wallet_client_url, get_auth()).unwrap();
972+
let wallet_client = Client::new(&wallet_client_url, get_auth()).unwrap();
973973
let wallet_info = wallet_client.get_wallet_info().unwrap();
974974

975975
assert_eq!(wallet_info.wallet_name, wallet_param.name);

0 commit comments

Comments
 (0)