mirror of
https://github.com/aljazceru/bitcoin-waila.git
synced 2025-12-17 12:54:19 +01:00
Fix uppercase prefixes
This commit is contained in:
@@ -191,7 +191,7 @@ impl FromStr for PaymentParams<'_> {
|
|||||||
fn from_str(str: &str) -> Result<Self, Self::Err> {
|
fn from_str(str: &str) -> Result<Self, Self::Err> {
|
||||||
let lower = str.to_lowercase();
|
let lower = str.to_lowercase();
|
||||||
if lower.starts_with("lightning:") {
|
if lower.starts_with("lightning:") {
|
||||||
let str = str.strip_prefix("lightning:").unwrap();
|
let str = lower.strip_prefix("lightning:").unwrap();
|
||||||
return Invoice::from_str(str)
|
return Invoice::from_str(str)
|
||||||
.map(PaymentParams::Bolt11)
|
.map(PaymentParams::Bolt11)
|
||||||
.or_else(|_| LnUrl::from_str(str).map(PaymentParams::LnUrl))
|
.or_else(|_| LnUrl::from_str(str).map(PaymentParams::LnUrl))
|
||||||
@@ -199,19 +199,19 @@ impl FromStr for PaymentParams<'_> {
|
|||||||
.or_else(|_| Offer::from_str(str).map(PaymentParams::Bolt12))
|
.or_else(|_| Offer::from_str(str).map(PaymentParams::Bolt12))
|
||||||
.map_err(|_| ());
|
.map_err(|_| ());
|
||||||
} else if lower.starts_with("lnurl:") {
|
} else if lower.starts_with("lnurl:") {
|
||||||
let str = str.strip_prefix("lnurl:").unwrap();
|
let str = lower.strip_prefix("lnurl:").unwrap();
|
||||||
return LnUrl::from_str(str)
|
return LnUrl::from_str(str)
|
||||||
.map(PaymentParams::LnUrl)
|
.map(PaymentParams::LnUrl)
|
||||||
.or_else(|_| LightningAddress::from_str(str).map(PaymentParams::LightningAddress))
|
.or_else(|_| LightningAddress::from_str(str).map(PaymentParams::LightningAddress))
|
||||||
.map_err(|_| ());
|
.map_err(|_| ());
|
||||||
} else if lower.starts_with("lnurlp:") {
|
} else if lower.starts_with("lnurlp:") {
|
||||||
let str = str.strip_prefix("lnurlp:").unwrap();
|
let str = lower.strip_prefix("lnurlp:").unwrap();
|
||||||
return LnUrl::from_str(str)
|
return LnUrl::from_str(str)
|
||||||
.map(PaymentParams::LnUrl)
|
.map(PaymentParams::LnUrl)
|
||||||
.or_else(|_| LightningAddress::from_str(str).map(PaymentParams::LightningAddress))
|
.or_else(|_| LightningAddress::from_str(str).map(PaymentParams::LightningAddress))
|
||||||
.map_err(|_| ());
|
.map_err(|_| ());
|
||||||
} else if lower.starts_with("nostr:") {
|
} else if lower.starts_with("nostr:") {
|
||||||
let str = str.strip_prefix("nostr:").unwrap();
|
let str = lower.strip_prefix("nostr:").unwrap();
|
||||||
return XOnlyPublicKey::from_str(str)
|
return XOnlyPublicKey::from_str(str)
|
||||||
.map(PaymentParams::Nostr)
|
.map(PaymentParams::Nostr)
|
||||||
.or_else(|_| XOnlyPublicKey::from_bech32(str).map(PaymentParams::Nostr))
|
.or_else(|_| XOnlyPublicKey::from_bech32(str).map(PaymentParams::Nostr))
|
||||||
@@ -308,6 +308,25 @@ mod tests {
|
|||||||
assert_eq!(parsed.lnurl(), None);
|
assert_eq!(parsed.lnurl(), None);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn parse_invoice_with_prefix_capital() {
|
||||||
|
let parsed =
|
||||||
|
PaymentParams::from_str(&format!("LIGHTNING:{}", SAMPLE_INVOICE.to_uppercase()))
|
||||||
|
.unwrap();
|
||||||
|
let expected_pubkey = PublicKey::from_str(SAMPLE_PUBKEY).unwrap();
|
||||||
|
|
||||||
|
assert_eq!(parsed.amount(), Some(Amount::from_sat(2_000_000)));
|
||||||
|
assert_eq!(parsed.amount_msats(), Some(2_000_000_000));
|
||||||
|
assert_eq!(parsed.node_pubkey(), Some(expected_pubkey));
|
||||||
|
assert_eq!(parsed.network(), Some(Network::Bitcoin));
|
||||||
|
assert_eq!(
|
||||||
|
parsed.address(),
|
||||||
|
Some(Address::from_str("1RustyRX2oai4EYYDpQGWvEL62BBGqN9T").unwrap())
|
||||||
|
);
|
||||||
|
assert_eq!(parsed.memo(), None);
|
||||||
|
assert_eq!(parsed.lnurl(), None);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn parse_bip_21() {
|
fn parse_bip_21() {
|
||||||
let parsed = PaymentParams::from_str(SAMPLE_BIP21).unwrap();
|
let parsed = PaymentParams::from_str(SAMPLE_BIP21).unwrap();
|
||||||
|
|||||||
Reference in New Issue
Block a user