summaryrefslogtreecommitdiff
path: root/src/include/taler_wire_lib.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/taler_wire_lib.h')
-rw-r--r--src/include/taler_wire_lib.h97
1 files changed, 97 insertions, 0 deletions
diff --git a/src/include/taler_wire_lib.h b/src/include/taler_wire_lib.h
index aef61f61c..835ea7ca5 100644
--- a/src/include/taler_wire_lib.h
+++ b/src/include/taler_wire_lib.h
@@ -24,6 +24,103 @@
#include <gnunet/gnunet_util_lib.h>
#include "taler_wire_plugin.h"
+/**
+ * Different account types supported by payto://.
+ */
+enum TALER_PaytoAccountType
+ {
+
+ /**
+ * Used to indicate an uninitialized struct.
+ */
+ TALER_PAC_NONE = 0,
+
+ /**
+ * Account type of a bank running the x-taler-bank protocol.
+ */
+ TALER_PAC_X_TALER_BANK,
+
+ /**
+ * Account identified by IBAN number.
+ */
+ TALER_PAC_IBAN
+ };
+
+/**
+ * Information about an account extracted from a payto://-URL.
+ */
+struct TALER_Account
+{
+
+ /**
+ * How this the account represented.
+ */
+ enum TALER_PaytoAccountType type;
+
+ /**
+ * Internals depending on @e type.
+ */
+ union {
+
+ /**
+ * Taler bank address from x-taler-bank. Set if
+ * @e type is #TALER_AC_X_TALER_BANK.
+ */
+ struct {
+
+ /**
+ * Hostname of the bank (possibly including port).
+ */
+ char *hostname;
+
+ /**
+ * Bank account number.
+ */
+ unsigned long long no;
+
+ /**
+ * Base URL of the bank hosting the account above.
+ */
+ char *bank_base_url;
+ } x_taler_bank;
+
+ /**
+ * Taler bank address from iban. Set if
+ * @e type is #TALER_AC_IBAN.
+ */
+ struct {
+
+ /**
+ * IBAN number.
+ */
+ char *number;
+
+ } iban;
+
+ } details;
+};
+
+
+/**
+ * Release memory allocated in @a acc.
+ *
+ * @param acc account to free, the pointer itself is NOT free'd.
+ */
+void
+TALER_WIRE_account_free (struct TALER_Account *acc);
+
+
+/**
+ * Parse @a payto_url and store the result in @a acc
+ *
+ * @param payto_url URL to parse
+ * @param acc[in,out] account to initialize, free using #TALER_WIRE_account_free() later
+ * @return #TALER_EC_NONE if @a payto_url is well-formed
+ */
+enum TALER_ErrorCode
+TALER_WIRE_payto_to_account (const char *payto_url,
+ struct TALER_Account *acc);
+
/**
* Obtain the payment method from a @a payto_url