[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-wallet-core] branch master updated: taler-util: make exchange pub
From: |
gnunet |
Subject: |
[taler-wallet-core] branch master updated: taler-util: make exchange pub optional in taler://withdraw-exchange URI |
Date: |
Thu, 07 Mar 2024 19:36:29 +0100 |
This is an automated email from the git hooks/post-receive script.
dold pushed a commit to branch master
in repository wallet-core.
The following commit(s) were added to refs/heads/master by this push:
new 51d91b719 taler-util: make exchange pub optional in
taler://withdraw-exchange URI
51d91b719 is described below
commit 51d91b719b5213d2cb49482f980a4e08ff88893a
Author: Florian Dold <florian@dold.me>
AuthorDate: Thu Mar 7 19:36:25 2024 +0100
taler-util: make exchange pub optional in taler://withdraw-exchange URI
---
packages/taler-util/src/taleruri.test.ts | 71 ++++++++++++++++++++++++++------
packages/taler-util/src/taleruri.ts | 10 ++---
2 files changed, 64 insertions(+), 17 deletions(-)
diff --git a/packages/taler-util/src/taleruri.test.ts
b/packages/taler-util/src/taleruri.test.ts
index ab7a27af6..dbd175fe5 100644
--- a/packages/taler-util/src/taleruri.test.ts
+++ b/packages/taler-util/src/taleruri.test.ts
@@ -421,19 +421,66 @@ test("taler dev exp URI (stringify)", (t) => {
*/
test("taler withdraw exchange URI (parse)", (t) => {
- const r1 = parseWithdrawExchangeUri(
-
"taler://withdraw-exchange/exchange.demo.taler.net/someroot/GJKG23V4ZBHEH45YRK7TWQE8ZTY7JWTY5094TQJSRZN5DSDBX8E0?a=KUDOS%3A2",
- );
- if (!r1) {
- t.fail();
- return;
+ {
+ const r1 = parseWithdrawExchangeUri(
+
"taler://withdraw-exchange/exchange.demo.taler.net/someroot/GJKG23V4ZBHEH45YRK7TWQE8ZTY7JWTY5094TQJSRZN5DSDBX8E0?a=KUDOS%3A2",
+ );
+ if (!r1) {
+ t.fail();
+ return;
+ }
+ t.deepEqual(
+ r1.exchangePub,
+ "GJKG23V4ZBHEH45YRK7TWQE8ZTY7JWTY5094TQJSRZN5DSDBX8E0",
+ );
+ t.deepEqual(
+ r1.exchangeBaseUrl,
+ "https://exchange.demo.taler.net/someroot/",
+ );
+ t.deepEqual(r1.amount, "KUDOS:2");
+ }
+ {
+ const r2 = parseWithdrawExchangeUri(
+ "taler://withdraw-exchange/exchange.demo.taler.net/someroot/",
+ );
+ if (!r2) {
+ t.fail();
+ return;
+ }
+ t.deepEqual(r2.exchangePub, undefined);
+ t.deepEqual(r2.amount, undefined);
+ t.deepEqual(
+ r2.exchangeBaseUrl,
+ "https://exchange.demo.taler.net/someroot/",
+ );
+ }
+
+ {
+ const r3 = parseWithdrawExchangeUri(
+ "taler://withdraw-exchange/exchange.demo.taler.net/",
+ );
+ if (!r3) {
+ t.fail();
+ return;
+ }
+ t.deepEqual(r3.exchangePub, undefined);
+ t.deepEqual(r3.amount, undefined);
+ t.deepEqual(r3.exchangeBaseUrl, "https://exchange.demo.taler.net/");
+ }
+
+ {
+ // No trailing slash, no path component
+ const r4 = parseWithdrawExchangeUri(
+ "taler://withdraw-exchange/exchange.demo.taler.net",
+ );
+ if (!r4) {
+ t.fail();
+ return;
+ }
+ t.deepEqual(r4.exchangePub, undefined);
+ t.deepEqual(r4.amount, undefined);
+ t.deepEqual(r4.exchangeBaseUrl, "https://exchange.demo.taler.net/");
}
- t.deepEqual(
- r1.exchangePub,
- "GJKG23V4ZBHEH45YRK7TWQE8ZTY7JWTY5094TQJSRZN5DSDBX8E0",
- );
- t.deepEqual(r1.exchangeBaseUrl, "https://exchange.demo.taler.net/someroot/");
- t.deepEqual(r1.amount, "KUDOS:2");
});
test("taler withdraw exchange URI (stringify)", (t) => {
diff --git a/packages/taler-util/src/taleruri.ts
b/packages/taler-util/src/taleruri.ts
index 9717a7d71..4a8647d21 100644
--- a/packages/taler-util/src/taleruri.ts
+++ b/packages/taler-util/src/taleruri.ts
@@ -122,7 +122,7 @@ export interface BackupRestoreUri {
export interface WithdrawExchangeUri {
type: TalerUriAction.WithdrawExchange;
exchangeBaseUrl: string;
- exchangePub: string;
+ exchangePub?: string;
amount?: AmountString;
}
@@ -401,11 +401,11 @@ export function parseWithdrawExchangeUri(
}
const c = pi?.rest.split("?");
const parts = c[0].split("/");
- if (parts.length < 2) {
+ if (parts.length < 1) {
return undefined;
}
const host = parts[0].toLowerCase();
- const exchangePub = parts[parts.length - 1];
+ const exchangePub = parts.length > 1 ? parts[parts.length - 1] : undefined;
const pathSegments = parts.slice(1, parts.length - 1);
const hostAndSegments = [host, ...pathSegments].join("/");
const exchangeBaseUrl = canonicalizeBaseUrl(
@@ -417,7 +417,7 @@ export function parseWithdrawExchangeUri(
return {
type: TalerUriAction.WithdrawExchange,
exchangeBaseUrl,
- exchangePub,
+ exchangePub: exchangePub != "" ? exchangePub : undefined,
amount,
};
}
@@ -545,7 +545,7 @@ export function stringifyWithdrawExchange({
const { proto, path, query } = getUrlInfo(exchangeBaseUrl, {
a: amount,
});
- return `${proto}://withdraw-exchange/${path}${exchangePub}${query}`;
+ return `${proto}://withdraw-exchange/${path}${exchangePub ?? ""}${query}`;
}
export function stringifyDevExperimentUri({
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [taler-wallet-core] branch master updated: taler-util: make exchange pub optional in taler://withdraw-exchange URI,
gnunet <=