Skip to content

Commit eb9003d

Browse files
committed
refactor(client)!: relay_fee result should be strongly typed
1 parent 83747b1 commit eb9003d

File tree

3 files changed

+10
-9
lines changed

3 files changed

+10
-9
lines changed

src/api.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use std::borrow::Borrow;
44
use std::convert::TryInto;
55

66
use bitcoin::consensus::encode::{deserialize, serialize};
7-
use bitcoin::{block, Script, Transaction, Txid};
7+
use bitcoin::{block, Amount, Script, Transaction, Txid};
88

99
use crate::batch::Batch;
1010
use crate::types::*;
@@ -97,8 +97,8 @@ pub trait ElectrumApi {
9797
/// Estimates the fee required in **Bitcoin per kilobyte** to confirm a transaction in `number` blocks.
9898
fn estimate_fee(&self, number: usize) -> Result<f64, Error>;
9999

100-
/// Returns the minimum accepted fee by the server's node in **Bitcoin, not Satoshi**.
101-
fn relay_fee(&self) -> Result<f64, Error>;
100+
/// Returns the minimum accepted fee by the server's node.
101+
fn relay_fee(&self) -> Result<Amount, Error>;
102102

103103
/// Subscribes to notifications for activity on a specific *scriptPubKey*.
104104
///

src/client.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use std::{borrow::Borrow, sync::RwLock};
44

55
use log::{info, warn};
66

7-
use bitcoin::{Script, Txid};
7+
use bitcoin::{Amount, Script, Txid};
88

99
use crate::api::ElectrumApi;
1010
use crate::batch::Batch;
@@ -212,7 +212,7 @@ impl ElectrumApi for Client {
212212
}
213213

214214
#[inline]
215-
fn relay_fee(&self) -> Result<f64, Error> {
215+
fn relay_fee(&self) -> Result<Amount, Error> {
216216
impl_inner_call!(self, relay_fee)
217217
}
218218

src/raw_client.rs

+5-4
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ use log::{debug, error, info, trace, warn};
1717

1818
use bitcoin::consensus::encode::deserialize;
1919
use bitcoin::hex::{DisplayHex, FromHex};
20-
use bitcoin::{Script, Txid};
20+
use bitcoin::{Amount, Script, Txid};
2121

2222
#[cfg(feature = "use-openssl")]
2323
use openssl::ssl::{SslConnector, SslMethod, SslStream, SslVerifyMode};
@@ -879,17 +879,18 @@ impl<T: Read + Write> ElectrumApi for RawClient<T> {
879879
.ok_or_else(|| Error::InvalidResponse(result.clone()))
880880
}
881881

882-
fn relay_fee(&self) -> Result<f64, Error> {
882+
fn relay_fee(&self) -> Result<Amount, Error> {
883883
let req = Request::new_id(
884884
self.last_id.fetch_add(1, Ordering::SeqCst),
885885
"blockchain.relayfee",
886886
vec![],
887887
);
888888
let result = self.call(req)?;
889889

890-
result
890+
let amount_float = result
891891
.as_f64()
892-
.ok_or_else(|| Error::InvalidResponse(result.clone()))
892+
.ok_or_else(|| Error::InvalidResponse(result.clone()))?;
893+
Amount::from_btc(amount_float).map_err(|_| Error::InvalidResponse(result.clone()))
893894
}
894895

895896
fn script_subscribe(&self, script: &Script) -> Result<Option<ScriptStatus>, Error> {

0 commit comments

Comments
 (0)