summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcello Stanisci <stanisci.m@gmail.com>2019-01-30 15:17:03 +0100
committerMarcello Stanisci <stanisci.m@gmail.com>2019-01-30 15:17:03 +0100
commitf68e7d0b07aa36364ef9d546afc51ecaea650479 (patch)
tree78afd11aac8b431ead3001c79a87324f5169d4cf
parent452ab68423d0a6ee78e5f360251d0d7f2262f1ab (diff)
downloadexchange-f68e7d0b07aa36364ef9d546afc51ecaea650479.tar.gz
exchange-f68e7d0b07aa36364ef9d546afc51ecaea650479.tar.bz2
exchange-f68e7d0b07aa36364ef9d546afc51ecaea650479.zip
Adding map: wire method name <--> plugin name.
-rw-r--r--src/auditor/taler-auditor.c44
-rw-r--r--src/exchange/taler-exchange-aggregator.c5
-rw-r--r--src/include/taler_wire_lib.h11
-rw-r--r--src/wire/wire_helper.c65
4 files changed, 98 insertions, 27 deletions
diff --git a/src/auditor/taler-auditor.c b/src/auditor/taler-auditor.c
index 4b88abd6..dced807b 100644
--- a/src/auditor/taler-auditor.c
+++ b/src/auditor/taler-auditor.c
@@ -1828,7 +1828,8 @@ struct AggregationContext
* Find the relevant wire plugin.
*
* @param ac context to search
- * @param type type of the wire plugin to load
+ * @param type type of the wire plugin to load; it
+ * will be used _as is_ from the dynamic loader.
* @return NULL on error
*/
static struct TALER_WIRE_Plugin *
@@ -1842,6 +1843,8 @@ get_wire_plugin (struct AggregationContext *ac,
if (0 == strcmp (type,
wp->type))
return wp->plugin;
+
+ /* Wants the exact *plugin name* (!= method) */
plugin = TALER_WIRE_plugin_load (cfg,
type);
if (NULL == plugin)
@@ -2486,12 +2489,13 @@ get_wire_fee (struct AggregationContext *ac,
* @return #GNUNET_OK to continue, #GNUNET_SYSERR to stop iteration
*/
static int
-check_wire_out_cb (void *cls,
- uint64_t rowid,
- struct GNUNET_TIME_Absolute date,
- const struct TALER_WireTransferIdentifierRawP *wtid,
- const json_t *wire,
- const struct TALER_Amount *amount)
+check_wire_out_cb
+ (void *cls,
+ uint64_t rowid,
+ struct GNUNET_TIME_Absolute date,
+ const struct TALER_WireTransferIdentifierRawP *wtid,
+ const json_t *wire,
+ const struct TALER_Amount *amount)
{
struct AggregationContext *ac = cls;
struct WireCheckContext wcc;
@@ -2544,12 +2548,14 @@ check_wire_out_cb (void *cls,
GNUNET_free (method);
return GNUNET_SYSERR;
}
+
if (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT != wcc.qs)
{
/* FIXME: can we provide a more detailed error report? */
- report_row_inconsistency ("wire_out",
- rowid,
- "audit of associated transactions failed");
+ report_row_inconsistency
+ ("wire_out",
+ rowid,
+ "audit of associated transactions failed");
GNUNET_free (method);
return GNUNET_OK;
}
@@ -2570,18 +2576,22 @@ check_wire_out_cb (void *cls,
&wcc.total_deposits,
wire_fee))
{
- report_amount_arithmetic_inconsistency ("wire out (fee structure)",
- rowid,
- &wcc.total_deposits,
- wire_fee,
- -1);
+
+ report_amount_arithmetic_inconsistency
+ ("wire out (fee structure)",
+ rowid,
+ &wcc.total_deposits,
+ wire_fee,
+ -1);
+
GNUNET_free (method);
return GNUNET_OK;
}
/* Round down to amount supported by wire method */
- plugin = get_wire_plugin (ac,
- method);
+ plugin = get_wire_plugin
+ (ac,
+ TALER_WIRE_get_plugin_from_method (method));
if (NULL == plugin)
{
GNUNET_break (0);
diff --git a/src/exchange/taler-exchange-aggregator.c b/src/exchange/taler-exchange-aggregator.c
index 07b4dc47..38654aaa 100644
--- a/src/exchange/taler-exchange-aggregator.c
+++ b/src/exchange/taler-exchange-aggregator.c
@@ -414,8 +414,9 @@ find_account_by_url (const char *url)
/**
- * Function called with information about a wire account. Adds the
- * account to our list (if it is enabled and we can load the plugin).
+ * Function called with information about a wire account. Adds
+ * the account to our list (if it is enabled and we can load the
+ * plugin).
*
* @param cls closure, NULL
* @param ai account information
diff --git a/src/include/taler_wire_lib.h b/src/include/taler_wire_lib.h
index b75c107b..aef61f61 100644
--- a/src/include/taler_wire_lib.h
+++ b/src/include/taler_wire_lib.h
@@ -36,6 +36,17 @@ TALER_WIRE_payto_get_method (const char *payto_url);
/**
+ * Get the plugin name from the payment method.
+ *
+ * @param method the method implemented by the plugin (for
+ * simplicity, we assume 1 method is implemented by 1 plugin).
+ * @return the plugin name, NULL if not found.
+ */
+const char *
+TALER_WIRE_get_plugin_from_method (const char *method);
+
+
+/**
* Load a WIRE plugin.
*
* @param cfg configuration to use
diff --git a/src/wire/wire_helper.c b/src/wire/wire_helper.c
index 34d40e11..13e9bd79 100644
--- a/src/wire/wire_helper.c
+++ b/src/wire/wire_helper.c
@@ -2,16 +2,19 @@
This file is part of TALER
(C) 2018 Taler Systems SA
- TALER is free software; you can redistribute it and/or modify it under the
- terms of the GNU General Public License as published by the Free Software
- Foundation; either version 3, or (at your option) any later version.
+ TALER is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 3,
+ or (at your option) any later version.
- TALER is distributed in the hope that it will be useful, but WITHOUT ANY
- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
- A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ TALER is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU General Public License along with
- TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
+ You should have received a copy of the GNU General Public
+ License along with TALER; see the file COPYING. If not, see
+ <http://www.gnu.org/licenses/>
*/
/**
@@ -30,6 +33,23 @@
/**
+ * Maps wire methods to plugin names.
+ */
+struct ConversionTable
+{
+
+ /**
+ * Wire method (e.g. 'sepa', 'x-taler-bank', ..)
+ */
+ const char *method;
+
+ /**
+ * Plugin name, e.g. 'ebics', 'taler_bank', ..
+ */
+ const char *plugin_name;
+};
+
+/**
* Obtain the payment method from a @a payto_url
*
* @param payto_url the URL to parse
@@ -54,4 +74,33 @@ TALER_WIRE_payto_get_method (const char *payto_url)
end - start);
}
+
+/**
+ * Get the plugin name from the payment method.
+ *
+ * @param method the method implemented by the plugin (for
+ * simplicity, we assume 1 method is implemented by 1 plugin).
+ * @return the plugin name, NULL if not found.
+ */
+const char *
+TALER_WIRE_get_plugin_from_method (const char *method)
+{
+ static const struct ConversionTable ct[] = {
+ {"x-taler-bank", "taler_bank"},
+ {"sepa", "ebics"},
+ {NULL, NULL}
+ };
+
+ for (unsigned int i=0;
+ NULL != ct[i].method;
+ i++)
+ {
+ if (0 == strcmp (method,
+ ct[i].method))
+ return ct[i].plugin_name;
+ }
+
+ return NULL;
+}
+
/* end of wire_helper.c */