Adding map: wire method name <--> plugin name.
This commit is contained in:
parent
452ab68423
commit
f68e7d0b07
@ -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,7 +2489,8 @@ get_wire_fee (struct AggregationContext *ac,
|
||||
* @return #GNUNET_OK to continue, #GNUNET_SYSERR to stop iteration
|
||||
*/
|
||||
static int
|
||||
check_wire_out_cb (void *cls,
|
||||
check_wire_out_cb
|
||||
(void *cls,
|
||||
uint64_t rowid,
|
||||
struct GNUNET_TIME_Absolute date,
|
||||
const struct TALER_WireTransferIdentifierRawP *wtid,
|
||||
@ -2544,10 +2548,12 @@ 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",
|
||||
report_row_inconsistency
|
||||
("wire_out",
|
||||
rowid,
|
||||
"audit of associated transactions failed");
|
||||
GNUNET_free (method);
|
||||
@ -2570,18 +2576,22 @@ check_wire_out_cb (void *cls,
|
||||
&wcc.total_deposits,
|
||||
wire_fee))
|
||||
{
|
||||
report_amount_arithmetic_inconsistency ("wire out (fee structure)",
|
||||
|
||||
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);
|
||||
|
@ -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
|
||||
|
@ -35,6 +35,17 @@ char *
|
||||
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.
|
||||
*
|
||||
|
@ -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/>
|
||||
*/
|
||||
|
||||
/**
|
||||
@ -29,6 +32,23 @@
|
||||
#define PAYTO "payto://"
|
||||
|
||||
|
||||
/**
|
||||
* 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
|
||||
*
|
||||
@ -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 */
|
||||
|
Loading…
Reference in New Issue
Block a user