diff options
Diffstat (limited to 'src/util/util.c')
-rw-r--r-- | src/util/util.c | 58 |
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 */ |