apoelstra / rust-jsonrpc

Rust JSONRPC library
Creative Commons Zero v1.0 Universal
158 stars 62 forks source link

`Client` URL cannot be modified #122

Open tcharding opened 4 months ago

tcharding commented 4 months ago

bitcoind adds the wallet to the URL for a bunch of API calls (eg getnewaddress) for example:

http://localhost:1234/wallet/<wallet-name>

However it is not possible to modify a Client's url (inside Transport), it would be sweet if when implementing an RPC client usingjsonrpc one could do something like

let client = Client::new();
let wallet = client.create_wallet()?;
let wallet_client = client.use_wallet(&wallet);
let address = wallet_client.get_new_address()?;
// Original client still usable
let another_wallet = client.some_other_non_wallet_api_call()?;
apoelstra commented 4 months ago

We added this method https://docs.rs/jsonrpc/latest/jsonrpc/http/simple_http/struct.SimpleHttpTransport.html#method.set_url_path specifically for this usecase.

apoelstra commented 4 months ago

We could add the same method to the minreq transport. But we can't add it generically because not every transport has a "URL".

tcharding commented 4 months ago

Oh cool, I missed that one (obviously). Yeah it would be nice to have that guy inherently on all the transports.