From 48e58124fb61ded372f147d00d112f108c997f81 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Thu, 21 Sep 2023 00:01:45 +0200 Subject: major refactor of fakebank implementation --- src/bank-lib/fakebank_twg.c | 106 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 src/bank-lib/fakebank_twg.c (limited to 'src/bank-lib/fakebank_twg.c') diff --git a/src/bank-lib/fakebank_twg.c b/src/bank-lib/fakebank_twg.c new file mode 100644 index 000000000..f362dd4a8 --- /dev/null +++ b/src/bank-lib/fakebank_twg.c @@ -0,0 +1,106 @@ +/* + This file is part of TALER + (C) 2016-2023 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 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 +*/ +/** + * @file bank-lib/fakebank_twg.c + * @brief main entry point for the Taler Wire Gateway API + * @author Christian Grothoff + */ +#include "platform.h" +#include "taler_fakebank_lib.h" +#include "taler_bank_service.h" +#include "taler_mhd_lib.h" +#include +#include "fakebank.h" +#include "fakebank_twg.h" +#include "fakebank_twg_admin_add_incoming.h" +#include "fakebank_twg_get_root.h" +#include "fakebank_twg_history.h" +#include "fakebank_twg_transfer.h" + + +MHD_RESULT +TALER_FAKEBANK_twg_main_ ( + struct TALER_FAKEBANK_Handle *h, + struct MHD_Connection *connection, + const char *account, + const char *url, + const char *method, + const char *upload_data, + size_t *upload_data_size, + void **con_cls) +{ + GNUNET_log (GNUNET_ERROR_TYPE_INFO, + "Fakebank, serving URL `%s' for account `%s'\n", + url, + account); + if (0 == strcasecmp (method, + MHD_HTTP_METHOD_GET)) + { + if ( (0 == strcmp (url, + "/history/incoming")) && + (NULL != account) ) + return TALER_FAKEBANK_twg_get_credit_history_ (h, + connection, + account, + con_cls); + if ( (0 == strcmp (url, + "/history/outgoing")) && + (NULL != account) ) + return TALER_FAKEBANK_twg_get_debit_history_ (h, + connection, + account, + con_cls); + if (0 == strcmp (url, + "/")) + return TALER_FAKEBANK_twg_get_root_ (h, + connection); + } + else if (0 == strcasecmp (method, + MHD_HTTP_METHOD_POST)) + { + if ( (0 == strcmp (url, + "/admin/add-incoming")) && + (NULL != account) ) + return TALER_FAKEBANK_twg_admin_add_incoming_ (h, + connection, + account, + upload_data, + upload_data_size, + con_cls); + if ( (0 == strcmp (url, + "/transfer")) && + (NULL != account) ) + return TALER_FAKEBANK_handle_transfer_ (h, + connection, + account, + upload_data, + upload_data_size, + con_cls); + } + /* Unexpected URL path, just close the connection. */ + TALER_LOG_ERROR ("Breaking URL: %s %s\n", + method, + url); + GNUNET_break_op (0); + return TALER_MHD_reply_with_error ( + connection, + MHD_HTTP_NOT_FOUND, + TALER_EC_GENERIC_ENDPOINT_UNKNOWN, + url); +} -- cgit v1.2.3