refactor: join_url accepts slice

This commit is contained in:
thesimplekid
2023-12-22 18:07:18 +00:00
parent e557d3ec6d
commit 8b16996cb9
3 changed files with 26 additions and 25 deletions

View File

@@ -21,7 +21,7 @@ pub struct HttpClient {}
impl Client for HttpClient {
/// Get Mint Keys [NUT-01]
async fn get_mint_keys(&self, mint_url: Url) -> Result<Keys, Error> {
let url = join_url(mint_url, "keys")?;
let url = join_url(mint_url, &["v1", "keys"])?;
let keys = Request::get(url.as_str())
.send()
.await
@@ -36,7 +36,7 @@ impl Client for HttpClient {
/// Get Keysets [NUT-02]
async fn get_mint_keysets(&self, mint_url: Url) -> Result<KeysetResponse, Error> {
let url = join_url(mint_url, "keysets")?;
let url = join_url(mint_url, &["v1", "keysets"])?;
let res = Request::get(url.as_str())
.send()
.await
@@ -61,7 +61,7 @@ impl Client for HttpClient {
quote: &str,
premint_secrets: PreMintSecrets,
) -> Result<MintBolt11Response, Error> {
let url = join_url(mint_url, "mint")?;
let url = join_url(mint_url, &["mint"])?;
let request = MintBolt11Request {
quote: quote.to_string(),
@@ -96,7 +96,7 @@ impl Client for HttpClient {
inputs: Vec<Proof>,
outputs: Option<Vec<BlindedMessage>>,
) -> Result<MeltBolt11Response, Error> {
let url = join_url(mint_url, "melt")?;
let url = join_url(mint_url, &["melt"])?;
let request = MeltBolt11Request {
quote,
@@ -129,7 +129,7 @@ impl Client for HttpClient {
mint_url: Url,
split_request: SwapRequest,
) -> Result<SwapResponse, Error> {
let url = join_url(mint_url, "split")?;
let url = join_url(mint_url, &["v1", "split"])?;
let res = Request::post(url.as_str())
.json(&split_request)
@@ -156,7 +156,7 @@ impl Client for HttpClient {
mint_url: Url,
proofs: Vec<nut00::mint::Proof>,
) -> Result<CheckSpendableResponse, Error> {
let url = join_url(mint_url, "check")?;
let url = join_url(mint_url, &["v1", "check"])?;
let request = CheckSpendableRequest {
proofs: proofs.to_owned(),
};
@@ -182,7 +182,7 @@ impl Client for HttpClient {
/// Get Mint Info [NUT-09]
async fn get_mint_info(&self, mint_url: Url) -> Result<MintInfo, Error> {
let url = join_url(mint_url, "info")?;
let url = join_url(mint_url, &["v1", "info"])?;
let res = Request::get(url.as_str())
.send()
.await

View File

@@ -22,7 +22,7 @@ pub struct HttpClient {}
impl Client for HttpClient {
/// Get Mint Keys [NUT-01]
async fn get_mint_keys(&self, mint_url: Url) -> Result<Keys, Error> {
let url = join_url(mint_url, "keys")?;
let url = join_url(mint_url, &["v1", "keys"])?;
let keys = minreq::get(url).send()?.json::<Value>()?;
let keys: Keys = serde_json::from_str(&keys.to_string())?;
@@ -31,7 +31,7 @@ impl Client for HttpClient {
/// Get Keysets [NUT-02]
async fn get_mint_keysets(&self, mint_url: Url) -> Result<KeysetResponse, Error> {
let url = join_url(mint_url, "keysets")?;
let url = join_url(mint_url, &["v1", "keysets"])?;
let res = minreq::get(url).send()?.json::<Value>()?;
let response: Result<KeysetResponse, serde_json::Error> =
@@ -50,7 +50,7 @@ impl Client for HttpClient {
quote: &str,
premint_secrets: PreMintSecrets,
) -> Result<MintBolt11Response, Error> {
let url = join_url(mint_url, "mint")?;
let url = join_url(mint_url, &["v1", "mint"])?;
let request = MintBolt11Request {
quote: quote.to_string(),
@@ -80,7 +80,7 @@ impl Client for HttpClient {
inputs: Vec<Proof>,
outputs: Option<Vec<BlindedMessage>>,
) -> Result<MeltBolt11Response, Error> {
let url = join_url(mint_url, "melt")?;
let url = join_url(mint_url, &["v1", "melt"])?;
let request = MeltBolt11Request {
quote,
@@ -109,7 +109,7 @@ impl Client for HttpClient {
split_request: SwapRequest,
) -> Result<SwapResponse, Error> {
// TODO: Add to endpoint
let url = join_url(mint_url, "swap")?;
let url = join_url(mint_url, &["v1", "swap"])?;
let res = minreq::post(url).with_json(&split_request)?.send()?;
@@ -128,7 +128,7 @@ impl Client for HttpClient {
mint_url: Url,
proofs: Vec<nut00::mint::Proof>,
) -> Result<CheckSpendableResponse, Error> {
let url = join_url(mint_url, "check")?;
let url = join_url(mint_url, &["v1", "check"])?;
let request = CheckSpendableRequest { proofs };
let res = minreq::post(url)
@@ -147,8 +147,7 @@ impl Client for HttpClient {
/// Get Mint Info [NUT-09]
async fn get_mint_info(&self, mint_url: Url) -> Result<MintInfo, Error> {
let url = join_url(mint_url, "v1")?;
let url = join_url(url, "info")?;
let url = join_url(mint_url, &["v1", "info"])?;
println!("{}", url);

View File

@@ -123,17 +123,19 @@ pub trait Client {
}
#[cfg(any(not(target_arch = "wasm32"), feature = "gloo"))]
fn join_url(url: Url, path: &str) -> Result<Url, Error> {
fn join_url(url: Url, paths: &[&str]) -> Result<Url, Error> {
let mut url = url;
if !url.path().ends_with('/') {
url.path_segments_mut()
.map_err(|_| Error::Custom("Url Path Segmants".to_string()))?
.push(path);
} else {
url.path_segments_mut()
.map_err(|_| Error::Custom("Url Path Segmants".to_string()))?
.pop()
.push(path);
for path in paths {
if !url.path().ends_with('/') {
url.path_segments_mut()
.map_err(|_| Error::Custom("Url Path Segmants".to_string()))?
.push(path);
} else {
url.path_segments_mut()
.map_err(|_| Error::Custom("Url Path Segmants".to_string()))?
.pop()
.push(path);
}
}
Ok(url)