Skip to content

Commit

Permalink
Merge pull request breez#731 from andrei-21/fix/parsing-lud-17
Browse files Browse the repository at this point in the history
Fix parsing LUD-17 by replacing `lnurl*` prefix once
  • Loading branch information
ok300 authored Jan 19, 2024
2 parents d9a1aaa + 20cf149 commit 75781e2
Showing 1 changed file with 30 additions and 2 deletions.
32 changes: 30 additions & 2 deletions libs/sdk-core/src/input_parser.rs
Original file line number Diff line number Diff line change
Expand Up @@ -349,7 +349,7 @@ fn lnurl_decode(encoded: &str) -> LnUrlResult<(String, String, Option<String>)>
let scheme_simple = &format!("{pref}:");
let scheme_authority = &format!("{pref}://");
if encoded.starts_with(scheme_simple) && !encoded.starts_with(scheme_authority) {
encoded = encoded.replace(scheme_simple, scheme_authority);
encoded = encoded.replacen(scheme_simple, scheme_authority, 1);
break;
}
}
Expand All @@ -370,7 +370,7 @@ fn lnurl_decode(encoded: &str) -> LnUrlResult<(String, String, Option<String>)>
false => "https",
};

Ok((domain.into(), encoded.replace(scheme, new_scheme), None))
Ok((domain.into(), encoded.replacen(scheme, new_scheme, 1), None))
}
}
}
Expand Down Expand Up @@ -1324,6 +1324,14 @@ pub(crate) mod tests {
None,
)
);
assert_eq!(
lnurl_decode("lnurlp://asfddf2dsf3flnurlp.onion")?,
(
"asfddf2dsf3flnurlp.onion".into(),
"http://asfddf2dsf3flnurlp.onion".into(),
None,
)
);
assert_eq!(
lnurl_decode("lnurlw://asfddf2dsf3f.onion")?,
(
Expand All @@ -1346,14 +1354,26 @@ pub(crate) mod tests {
lnurl_decode("lnurlp://domain.com")?,
("domain.com".into(), "https://domain.com".into(), None)
);
assert_eq!(
lnurl_decode("lnurlp://lnurlp.com")?,
("lnurlp.com".into(), "https://lnurlp.com".into(), None)
);
assert_eq!(
lnurl_decode("lnurlw://domain.com")?,
("domain.com".into(), "https://domain.com".into(), None)
);
assert_eq!(
lnurl_decode("lnurlw://lnurlw.com")?,
("lnurlw.com".into(), "https://lnurlw.com".into(), None)
);
assert_eq!(
lnurl_decode("keyauth://domain.com")?,
("domain.com".into(), "https://domain.com".into(), None)
);
assert_eq!(
lnurl_decode("keyauth://keyauth.com")?,
("keyauth.com".into(), "https://keyauth.com".into(), None)
);

// Same as above, but prefix: approach instead of prefix://
assert_eq!(
Expand Down Expand Up @@ -1385,6 +1405,14 @@ pub(crate) mod tests {
lnurl_decode("lnurlp:domain.com")?,
("domain.com".into(), "https://domain.com".into(), None)
);
assert_eq!(
lnurl_decode("lnurlp:domain.com/lnurlp:lol")?,
(
"domain.com".into(),
"https://domain.com/lnurlp:lol".into(),
None
)
);
assert_eq!(
lnurl_decode("lnurlw:domain.com")?,
("domain.com".into(), "https://domain.com".into(), None)
Expand Down

0 comments on commit 75781e2

Please sign in to comment.