aboutsummaryrefslogtreecommitdiff
path: root/packages/taler-util/src
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2022-10-12 21:19:09 +0200
committerFlorian Dold <florian@dold.me>2022-10-12 21:20:22 +0200
commit3da1e82a245851c384c22293c928fcef1c4c2f34 (patch)
tree27de90b822f2d8047524659fd8a5084d26ef65bc /packages/taler-util/src
parent8bfa77200e711718e24c72ee84a28fa443c61786 (diff)
downloadwallet-core-3da1e82a245851c384c22293c928fcef1c4c2f34.tar.xz
wallet-core: skeleton for dev-experiments
Diffstat (limited to 'packages/taler-util/src')
-rw-r--r--packages/taler-util/src/taleruri.ts21
-rw-r--r--packages/taler-util/src/walletTypes.ts10
2 files changed, 31 insertions, 0 deletions
diff --git a/packages/taler-util/src/taleruri.ts b/packages/taler-util/src/taleruri.ts
index e7d66d7d5..baca3efac 100644
--- a/packages/taler-util/src/taleruri.ts
+++ b/packages/taler-util/src/taleruri.ts
@@ -50,6 +50,10 @@ export interface PayPullUriResult {
contractPriv: string;
}
+export interface DevExperimentUri {
+ devExperimentId: string;
+}
+
/**
* Parse a taler[+http]://withdraw URI.
* Return undefined if not passed a valid URI.
@@ -91,6 +95,7 @@ export enum TalerUriType {
TalerNotifyReserve = "taler-notify-reserve",
TalerPayPush = "taler-pay-push",
TalerPayPull = "taler-pay-pull",
+ TalerDevExperiment = "taler-dev-experiment",
Unknown = "unknown",
}
@@ -141,6 +146,9 @@ export function classifyTalerUri(s: string): TalerUriType {
if (sl.startsWith("taler://notify-reserve/")) {
return TalerUriType.TalerNotifyReserve;
}
+ if (sl.startsWith("taler://dev-experiment/")) {
+ return TalerUriType.TalerDevExperiment;
+ }
return TalerUriType.Unknown;
}
@@ -300,6 +308,19 @@ export function parseRefundUri(s: string): RefundUriResult | undefined {
};
}
+export function parseDevExperimentUri(s: string): DevExperimentUri | undefined {
+ const pi = parseProtoInfo(s, "dev-experiment");
+ const c = pi?.rest.split("?");
+ if (!c) {
+ return undefined;
+ }
+ // const q = new URLSearchParams(c[1] ?? "");
+ const parts = c[0].split("/");
+ return {
+ devExperimentId: parts[0],
+ };
+}
+
export function constructPayPushUri(args: {
exchangeBaseUrl: string;
contractPriv: string;
diff --git a/packages/taler-util/src/walletTypes.ts b/packages/taler-util/src/walletTypes.ts
index 7495e02d6..05b18fe6d 100644
--- a/packages/taler-util/src/walletTypes.ts
+++ b/packages/taler-util/src/walletTypes.ts
@@ -1683,6 +1683,16 @@ export interface AcceptPeerPullPaymentRequest {
peerPullPaymentIncomingId: string;
}
+export interface ApplyDevExperimentRequest {
+ devExperimentUri: string;
+}
+
+export const codecForApplyDevExperiment =
+ (): Codec<ApplyDevExperimentRequest> =>
+ buildCodecForObject<ApplyDevExperimentRequest>()
+ .property("devExperimentUri", codecForString())
+ .build("ApplyDevExperimentRequest");
+
export const codecForAcceptPeerPullPaymentRequest =
(): Codec<AcceptPeerPullPaymentRequest> =>
buildCodecForObject<AcceptPeerPullPaymentRequest>()