From 836fe255cc4e1e2f67875e0e3c6f41830ec5cb4f Mon Sep 17 00:00:00 2001 From: thesimplekid Date: Mon, 29 Jul 2024 17:47:33 -0500 Subject: [PATCH] fix: client selects ohttp relay --- crates/cdk-axum/src/router_handlers.rs | 33 +++++++++---------------- crates/cdk-bdk/src/lib.rs | 13 +++++----- crates/cdk-cli/src/sub_commands/mint.rs | 25 ++++++++----------- crates/cdk/src/nuts/nut17.rs | 2 -- 4 files changed, 28 insertions(+), 45 deletions(-) diff --git a/crates/cdk-axum/src/router_handlers.rs b/crates/cdk-axum/src/router_handlers.rs index 3a21bd2d5..95ed6be67 100644 --- a/crates/cdk-axum/src/router_handlers.rs +++ b/crates/cdk-axum/src/router_handlers.rs @@ -142,14 +142,10 @@ pub async fn get_mint_onchain_quote( let settings = onchain.get_settings(); let payjoin = match settings.payjoin_settings.receive_enabled { - true => match (settings.payjoin_settings.ohttp_relay, address.payjoin_url) { - (Some(ohttp_relay), Some(payjoin_directory)) => Some(PayjoinInfo { - origin: payjoin_directory, - ohttp_relay: Some(ohttp_relay), - pjos: false, - }), - _ => None, - }, + true => address.payjoin_url.map(|payjoin_directory| PayjoinInfo { + origin: payjoin_directory, + pjos: false, + }), false => None, }; @@ -227,19 +223,14 @@ pub async fn get_check_mint_onchain_quote( let settings = onchain.get_settings(); let payjoin = match settings.payjoin_settings.receive_enabled { - true => { - match ( - settings.payjoin_settings.ohttp_relay, - settings.payjoin_settings.payjoin_directory, - ) { - (Some(ohttp_relay), Some(payjoin_directory)) => Some(PayjoinInfo { - origin: payjoin_directory, - ohttp_relay: Some(ohttp_relay), - pjos: false, - }), - _ => None, - } - } + true => settings + .payjoin_settings + .payjoin_directory + .map(|payjoin_directory| PayjoinInfo { + origin: payjoin_directory, + pjos: false, + }), + false => None, }; diff --git a/crates/cdk-bdk/src/lib.rs b/crates/cdk-bdk/src/lib.rs index d8e8ff8fd..d1802b8ae 100644 --- a/crates/cdk-bdk/src/lib.rs +++ b/crates/cdk-bdk/src/lib.rs @@ -214,18 +214,17 @@ impl BdkWallet { // TODO: Making this a payjoin trait impl BdkWallet { async fn start_payjoin(&self, address: &str) -> Result { - let ohttp_relay = self - .payjoin_settings - .ohttp_relay - .clone() - .ok_or(anyhow!("ohttp relay required"))?; + let ohttp_relay = self.payjoin_settings.ohttp_relay.clone(); + let payjoin_directory = self .payjoin_settings .payjoin_directory .clone() - .ok_or(anyhow!("payjoin directory required"))?; + .ok_or(anyhow!("pajoin directory required"))?; - let ohttp_relay: Url = ohttp_relay.parse()?; + let ohttp_relay: Url = ohttp_relay + .ok_or(anyhow!("Payjoing ohttp relay must be defined"))? + .parse()?; let payjoin_directory: Url = payjoin_directory.parse()?; // Fetch keys using HTTP CONNECT method diff --git a/crates/cdk-cli/src/sub_commands/mint.rs b/crates/cdk-cli/src/sub_commands/mint.rs index 91e358541..24cd14ea9 100644 --- a/crates/cdk-cli/src/sub_commands/mint.rs +++ b/crates/cdk-cli/src/sub_commands/mint.rs @@ -11,7 +11,7 @@ use cdk::wallet::multi_mint_wallet::WalletKey; use cdk::wallet::{MultiMintWallet, Wallet}; use cdk::Amount; use clap::Args; -use payjoin::{OhttpKeys, PjUriBuilder}; +use payjoin::PjUriBuilder; use tokio::time::sleep; #[derive(Args, Debug)] @@ -25,6 +25,9 @@ pub struct MintSubCommand { unit: String, #[arg(long, default_value = "bolt11")] method: String, + /// Payjoin relay + #[arg(short, long, default_value = "https://pj.bobspacebkk.com")] + payjoin_relay: String, } pub async fn mint( @@ -55,7 +58,6 @@ pub async fn mint( } }; - println!("here"); let quote_id; match method { @@ -87,25 +89,18 @@ pub async fn mint( match quote.payjoin { Some(payjoin_info) => { - let ohttp_keys: Option = match payjoin_info.ohttp_relay { - Some(relay) => Some( - payjoin::io::fetch_ohttp_keys( - relay.clone().parse()?, - payjoin_info.origin.parse()?, - ) - .await?, - ), - None => None, - }; - - println!("ohttp keys: {:?}", ohttp_keys.clone().unwrap().to_string()); + let ohttp_keys = payjoin::io::fetch_ohttp_keys( + sub_command_args.payjoin_relay.parse()?, + payjoin_info.origin.parse()?, + ) + .await?; let address = payjoin::bitcoin::Address::from_str("e.address)?; let uri = PjUriBuilder::new( address.assume_checked(), payjoin_info.origin.parse()?, - ohttp_keys, + Some(ohttp_keys), None, ) .amount(payjoin::bitcoin::Amount::from_sat(sub_command_args.amount)) diff --git a/crates/cdk/src/nuts/nut17.rs b/crates/cdk/src/nuts/nut17.rs index 2446a3d9f..55449e63d 100644 --- a/crates/cdk/src/nuts/nut17.rs +++ b/crates/cdk/src/nuts/nut17.rs @@ -34,8 +34,6 @@ pub struct MintQuoteBtcOnchainResponse { pub struct PayjoinInfo { /// Origin Directory in v2 pub origin: String, - /// Ohttp keys - pub ohttp_relay: Option, /// PJO pub pjos: bool, }