summaryrefslogtreecommitdiff
path: root/src/util/payto.c
diff options
context:
space:
mode:
authorMS <ms@taler.net>2020-07-27 12:48:48 +0200
committerMS <ms@taler.net>2020-07-27 12:48:48 +0200
commit7c2de4c5e6b7b1184d059057e1d412d6f0133816 (patch)
tree258e80ba800130496785daa4851ae3893c11aed3 /src/util/payto.c
parente1fcb2b26cb90a912e57acf5753480a18237f021 (diff)
downloadexchange-7c2de4c5e6b7b1184d059057e1d412d6f0133816.tar.gz
exchange-7c2de4c5e6b7b1184d059057e1d412d6f0133816.tar.bz2
exchange-7c2de4c5e6b7b1184d059057e1d412d6f0133816.zip
payto parser: extract 'subject' parameter.
Diffstat (limited to 'src/util/payto.c')
-rw-r--r--src/util/payto.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/util/payto.c b/src/util/payto.c
index 3540052c1..4b2bbf4e3 100644
--- a/src/util/payto.c
+++ b/src/util/payto.c
@@ -29,6 +29,45 @@
/**
+ * Extract the subject value from the URI parameters.
+ *
+ * @param payto_uri the URL to parse
+ * @return NULL if the subject parameter is not found.
+ * The caller should free the returned value.
+ */
+char *
+TALER_payto_get_subject (const char *payto_uri)
+{
+ const char *key;
+ const char *value_start;
+ const char *value_end;
+
+ key = strchr (payto_uri,
+ (unsigned char) '?');
+ if (NULL == key)
+ return NULL;
+
+ do {
+ if (0 == strncasecmp (++key,
+ "subject",
+ strlen ("subject")))
+ {
+ value_start = strchr (key,
+ (unsigned char) '=');
+ if (NULL == value_start)
+ return NULL;
+ value_end = strchrnul (value_start,
+ (unsigned char) '&');
+
+ return GNUNET_strndup (value_start + 1,
+ value_end - value_start - 1);
+ }
+ } while ( (key = strchr (key,
+ (unsigned char) '&')) );
+ return NULL;
+}
+
+/**
* Obtain the payment method from a @a payto_uri. The
* format of a payto URI is 'payto://$METHOD/$SOMETHING'.
* We return $METHOD.