summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/util/taleruri-test.ts11
-rw-r--r--src/util/taleruri.ts10
2 files changed, 15 insertions, 6 deletions
diff --git a/src/util/taleruri-test.ts b/src/util/taleruri-test.ts
index 40a30bf7f..314a981fd 100644
--- a/src/util/taleruri-test.ts
+++ b/src/util/taleruri-test.ts
@@ -107,6 +107,17 @@ test("taler withdraw uri parsing", (t) => {
t.is(r1.bankIntegrationApiBaseUrl, "https://bank.example.com/");
});
+test("taler withdraw uri parsing (http)", (t) => {
+ const url1 = "taler+http://withdraw/bank.example.com/12345";
+ const r1 = parseWithdrawUri(url1);
+ if (!r1) {
+ t.fail();
+ return;
+ }
+ t.is(r1.withdrawalOperationId, "12345");
+ t.is(r1.bankIntegrationApiBaseUrl, "http://bank.example.com/");
+});
+
test("taler refund uri parsing", (t) => {
const url1 = "taler://refund/merchant.example.com/1234";
const r1 = parseRefundUri(url1);
diff --git a/src/util/taleruri.ts b/src/util/taleruri.ts
index 7e64dd4ca..fd2cca6ce 100644
--- a/src/util/taleruri.ts
+++ b/src/util/taleruri.ts
@@ -40,13 +40,11 @@ export interface TipUriResult {
* Return undefined if not passed a valid URI.
*/
export function parseWithdrawUri(s: string): WithdrawUriResult | undefined {
- const pfx = "taler://withdraw/";
- if (!s.toLowerCase().startsWith(pfx)) {
+ const pi = parseProtoInfo(s, "withdraw");
+ if (!pi) {
return undefined;
}
-
- const rest = s.substring(pfx.length);
- const parts = rest.split("/");
+ const parts = pi.rest.split("/");
if (parts.length < 2) {
return undefined;
@@ -58,7 +56,7 @@ export function parseWithdrawUri(s: string): WithdrawUriResult | undefined {
const p = [host, ...pathSegments].join("/");
return {
- bankIntegrationApiBaseUrl: `https://${p}/`,
+ bankIntegrationApiBaseUrl: `${pi.innerProto}://${p}/`,
withdrawalOperationId: withdrawId,
};
}