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.
|
* Find the relevant wire plugin.
|
||||||
*
|
*
|
||||||
* @param ac context to search
|
* @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
|
* @return NULL on error
|
||||||
*/
|
*/
|
||||||
static struct TALER_WIRE_Plugin *
|
static struct TALER_WIRE_Plugin *
|
||||||
@ -1842,6 +1843,8 @@ get_wire_plugin (struct AggregationContext *ac,
|
|||||||
if (0 == strcmp (type,
|
if (0 == strcmp (type,
|
||||||
wp->type))
|
wp->type))
|
||||||
return wp->plugin;
|
return wp->plugin;
|
||||||
|
|
||||||
|
/* Wants the exact *plugin name* (!= method) */
|
||||||
plugin = TALER_WIRE_plugin_load (cfg,
|
plugin = TALER_WIRE_plugin_load (cfg,
|
||||||
type);
|
type);
|
||||||
if (NULL == plugin)
|
if (NULL == plugin)
|
||||||
@ -2486,12 +2489,13 @@ get_wire_fee (struct AggregationContext *ac,
|
|||||||
* @return #GNUNET_OK to continue, #GNUNET_SYSERR to stop iteration
|
* @return #GNUNET_OK to continue, #GNUNET_SYSERR to stop iteration
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
check_wire_out_cb (void *cls,
|
check_wire_out_cb
|
||||||
uint64_t rowid,
|
(void *cls,
|
||||||
struct GNUNET_TIME_Absolute date,
|
uint64_t rowid,
|
||||||
const struct TALER_WireTransferIdentifierRawP *wtid,
|
struct GNUNET_TIME_Absolute date,
|
||||||
const json_t *wire,
|
const struct TALER_WireTransferIdentifierRawP *wtid,
|
||||||
const struct TALER_Amount *amount)
|
const json_t *wire,
|
||||||
|
const struct TALER_Amount *amount)
|
||||||
{
|
{
|
||||||
struct AggregationContext *ac = cls;
|
struct AggregationContext *ac = cls;
|
||||||
struct WireCheckContext wcc;
|
struct WireCheckContext wcc;
|
||||||
@ -2544,12 +2548,14 @@ check_wire_out_cb (void *cls,
|
|||||||
GNUNET_free (method);
|
GNUNET_free (method);
|
||||||
return GNUNET_SYSERR;
|
return GNUNET_SYSERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT != wcc.qs)
|
if (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT != wcc.qs)
|
||||||
{
|
{
|
||||||
/* FIXME: can we provide a more detailed error report? */
|
/* FIXME: can we provide a more detailed error report? */
|
||||||
report_row_inconsistency ("wire_out",
|
report_row_inconsistency
|
||||||
rowid,
|
("wire_out",
|
||||||
"audit of associated transactions failed");
|
rowid,
|
||||||
|
"audit of associated transactions failed");
|
||||||
GNUNET_free (method);
|
GNUNET_free (method);
|
||||||
return GNUNET_OK;
|
return GNUNET_OK;
|
||||||
}
|
}
|
||||||
@ -2570,18 +2576,22 @@ check_wire_out_cb (void *cls,
|
|||||||
&wcc.total_deposits,
|
&wcc.total_deposits,
|
||||||
wire_fee))
|
wire_fee))
|
||||||
{
|
{
|
||||||
report_amount_arithmetic_inconsistency ("wire out (fee structure)",
|
|
||||||
rowid,
|
report_amount_arithmetic_inconsistency
|
||||||
&wcc.total_deposits,
|
("wire out (fee structure)",
|
||||||
wire_fee,
|
rowid,
|
||||||
-1);
|
&wcc.total_deposits,
|
||||||
|
wire_fee,
|
||||||
|
-1);
|
||||||
|
|
||||||
GNUNET_free (method);
|
GNUNET_free (method);
|
||||||
return GNUNET_OK;
|
return GNUNET_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Round down to amount supported by wire method */
|
/* Round down to amount supported by wire method */
|
||||||
plugin = get_wire_plugin (ac,
|
plugin = get_wire_plugin
|
||||||
method);
|
(ac,
|
||||||
|
TALER_WIRE_get_plugin_from_method (method));
|
||||||
if (NULL == plugin)
|
if (NULL == plugin)
|
||||||
{
|
{
|
||||||
GNUNET_break (0);
|
GNUNET_break (0);
|
||||||
|
@ -414,8 +414,9 @@ find_account_by_url (const char *url)
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function called with information about a wire account. Adds the
|
* Function called with information about a wire account. Adds
|
||||||
* account to our list (if it is enabled and we can load the plugin).
|
* the account to our list (if it is enabled and we can load the
|
||||||
|
* plugin).
|
||||||
*
|
*
|
||||||
* @param cls closure, NULL
|
* @param cls closure, NULL
|
||||||
* @param ai account information
|
* @param ai account information
|
||||||
|
@ -35,6 +35,17 @@ char *
|
|||||||
TALER_WIRE_payto_get_method (const char *payto_url);
|
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.
|
* Load a WIRE plugin.
|
||||||
*
|
*
|
||||||
|
@ -2,16 +2,19 @@
|
|||||||
This file is part of TALER
|
This file is part of TALER
|
||||||
(C) 2018 Taler Systems SA
|
(C) 2018 Taler Systems SA
|
||||||
|
|
||||||
TALER is free software; you can redistribute it and/or modify it under the
|
TALER is free software; you can redistribute it and/or modify
|
||||||
terms of the GNU General Public License as published by the Free Software
|
it under the terms of the GNU General Public License as
|
||||||
Foundation; either version 3, or (at your option) any later version.
|
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
|
TALER is distributed in the hope that it will be useful, but
|
||||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
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
|
You should have received a copy of the GNU General Public
|
||||||
TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
|
License along with TALER; see the file COPYING. If not, see
|
||||||
|
<http://www.gnu.org/licenses/>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -29,6 +32,23 @@
|
|||||||
#define PAYTO "payto://"
|
#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
|
* Obtain the payment method from a @a payto_url
|
||||||
*
|
*
|
||||||
@ -54,4 +74,33 @@ TALER_WIRE_payto_get_method (const char *payto_url)
|
|||||||
end - start);
|
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 */
|
/* end of wire_helper.c */
|
||||||
|
Loading…
Reference in New Issue
Block a user