[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-wallet-core] 02/06: payto URI builder
From: |
gnunet |
Subject: |
[taler-wallet-core] 02/06: payto URI builder |
Date: |
Tue, 17 Jan 2023 20:01:39 +0100 |
This is an automated email from the git hooks/post-receive script.
sebasjm pushed a commit to branch master
in repository wallet-core.
commit 5be2d128ed088a77d6448ac1ebf25aba3716bd81
Author: Sebastian <sebasjm@gmail.com>
AuthorDate: Tue Jan 17 15:55:01 2023 -0300
payto URI builder
---
packages/taler-util/src/payto.ts | 64 ++++++++++++++++++++++++++++++++++++++--
1 file changed, 62 insertions(+), 2 deletions(-)
diff --git a/packages/taler-util/src/payto.ts b/packages/taler-util/src/payto.ts
index 1ac081a76..dd35b44be 100644
--- a/packages/taler-util/src/payto.ts
+++ b/packages/taler-util/src/payto.ts
@@ -55,6 +55,66 @@ export interface PaytoUriBitcoin extends PaytoUriGeneric {
const paytoPfx = "payto://";
+export function buildPayto(
+ type: "iban",
+ iban: string,
+ bic: string | undefined,
+): PaytoUriIBAN;
+export function buildPayto(
+ type: "bitcoin",
+ address: string,
+ reserve: string | undefined,
+): PaytoUriBitcoin;
+export function buildPayto(
+ type: "x-taler-bank",
+ host: string,
+ account: string,
+): PaytoUriTalerBank;
+export function buildPayto(
+ type: "iban" | "bitcoin" | "x-taler-bank",
+ first: string,
+ second?: string,
+): PaytoUriGeneric {
+ switch (type) {
+ case "bitcoin": {
+ const result: PaytoUriBitcoin = {
+ isKnown: true,
+ targetType: "bitcoin",
+ targetPath: first,
+ params: {},
+ segwitAddrs: !second ? [] : generateFakeSegwitAddress(second, first),
+ };
+ return result;
+ }
+ case "iban": {
+ const result: PaytoUriIBAN = {
+ isKnown: true,
+ targetType: "iban",
+ iban: first,
+ params: {},
+ targetPath: !second ? first : `${second}/${first}`,
+ };
+ return result;
+ }
+ case "x-taler-bank": {
+ if (!second) throw Error("missing account for payto://x-taler-bank");
+ const result: PaytoUriTalerBank = {
+ isKnown: true,
+ targetType: "x-taler-bank",
+ host: first,
+ account: second,
+ params: {},
+ targetPath: `${first}/${second}`,
+ };
+ return result;
+ }
+ default: {
+ const unknownType: never = type;
+ throw Error(`unknown payto:// type ${unknownType}`);
+ }
+ }
+}
+
/**
* Add query parameters to a payto URI
*/
@@ -84,8 +144,8 @@ export function stringifyPaytoUri(p: PaytoUri): string {
const url = new URL(`${paytoPfx}${p.targetType}/${p.targetPath}`);
const paramList = !p.params ? [] : Object.entries(p.params);
paramList.forEach(([key, value]) => {
- url.searchParams.set(key, value)
- })
+ url.searchParams.set(key, value);
+ });
return url.href;
}
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
- [taler-wallet-core] branch master updated (99d7cbae0 -> 420493b3e), gnunet, 2023/01/17
- [taler-wallet-core] 02/06: payto URI builder,
gnunet <=
- [taler-wallet-core] 03/06: stronger type check to be sure that ErrorDetails is consistent, gnunet, 2023/01/17
- [taler-wallet-core] 06/06: use payto builder and prevent showing cancel for non-payment, gnunet, 2023/01/17
- [taler-wallet-core] 01/06: use URL api to stringify payto://, gnunet, 2023/01/17
- [taler-wallet-core] 04/06: re-use the same kyc function from withdrawal for deposits, gnunet, 2023/01/17
- [taler-wallet-core] 05/06: throw error after 5 seconds if wallet-core didn't reply to a command, gnunet, 2023/01/17