summaryrefslogtreecommitdiff
path: root/src/util/util.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/util/util.c')
-rw-r--r--src/util/util.c58
1 files changed, 58 insertions, 0 deletions
diff --git a/src/util/util.c b/src/util/util.c
index 50ac5c1a7..62f733a17 100644
--- a/src/util/util.c
+++ b/src/util/util.c
@@ -805,4 +805,62 @@ TALER_payto_xtalerbank_make (const char *bank_url,
}
+/**
+ * Given an x-taler-bank payto:// URL, compute
+ * the HTTP(S) base URL of the account.
+ *
+ * @param payto the payto URL
+ * @return bank URL of the account, NULL if not x-taler-bak payto URL
+ */
+char *
+TALER_xtalerbank_base_url_from_payto (const char *payto)
+{
+ const char *start;
+ const char *end;
+
+ if (0 != strncasecmp (payto,
+ "payto://x-taler-bank/",
+ strlen ("payto://x-taler-bank/")))
+ {
+ return NULL;
+ }
+ start = &payto [strlen ("payto://x-taler-bank/")];
+ end = strchr (start,
+ (unsigned char) '/');
+ if (NULL == end)
+ end = &start[strlen (start)];
+ return GNUNET_strndup (start,
+ end - start);
+}
+
+
+/**
+ * Given an x-taler-bank payto:// URL, compute
+ * the HTTP(S) base URL of the account.
+ *
+ * @param payto the payto URL
+ * @return bank URL of the account, NULL if not x-taler-bak payto URL
+ */
+char *
+TALER_xtalerbank_account_url_from_payto (const char *payto)
+{
+ const char *start;
+ const char *end;
+
+ if (0 != strncasecmp (payto,
+ "payto://x-taler-bank/",
+ strlen ("payto://x-taler-bank/")))
+ {
+ return NULL;
+ }
+ start = &payto [strlen ("payto://x-taler-bank/")];
+ end = strchr (start,
+ (unsigned char) '?');
+ if (NULL == end)
+ end = &start[strlen (start)];
+ return GNUNET_strndup (start,
+ end - start);
+}
+
+
/* end of util.c */