gnunet-svn
[Top][All Lists]
Advanced

[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.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]