From f68e7d0b07aa36364ef9d546afc51ecaea650479 Mon Sep 17 00:00:00 2001 From: Marcello Stanisci Date: Wed, 30 Jan 2019 15:17:03 +0100 Subject: Adding map: wire method name <--> plugin name. --- src/wire/wire_helper.c | 65 +++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 57 insertions(+), 8 deletions(-) (limited to 'src/wire/wire_helper.c') diff --git a/src/wire/wire_helper.c b/src/wire/wire_helper.c index 34d40e11e..13e9bd79c 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 + You should have received a copy of the GNU General Public + License along with TALER; see the file COPYING. If not, see + */ /** @@ -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 */ -- cgit v1.2.3