exchange

Base system with REST service to issue digital coins, run by the payment service provider
Log | Files | Refs | Submodules | README | LICENSE

fakebank_tbr.c (3030B)


      1 /*
      2   This file is part of TALER
      3   (C) 2016-2024 Taler Systems SA
      4 
      5   TALER is free software; you can redistribute it and/or
      6   modify it under the terms of the GNU General Public License
      7   as published by the Free Software Foundation; either version 3,
      8   or (at your option) any later version.
      9 
     10   TALER is distributed in the hope that it will be useful,
     11   but WITHOUT ANY WARRANTY; without even the implied warranty of
     12   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13   GNU General Public License for more details.
     14 
     15   You should have received a copy of the GNU General Public
     16   License along with TALER; see the file COPYING.  If not,
     17   see <http://www.gnu.org/licenses/>
     18 */
     19 /**
     20  * @file bank-lib/fakebank_tbr.c
     21  * @brief main entry point for the Taler Bank Revenue API
     22  * @author Christian Grothoff <christian@grothoff.org>
     23  */
     24 #include "taler/platform.h"
     25 #include "taler/taler_fakebank_lib.h"
     26 #include "taler/taler_bank_service.h"
     27 #include "taler/taler_mhd_lib.h"
     28 #include <gnunet/gnunet_mhd_compat.h>
     29 #include "fakebank.h"
     30 #include "fakebank_tbr.h"
     31 #include "fakebank_tbr_get_history.h"
     32 #include "fakebank_tbr_get_root.h"
     33 
     34 
     35 MHD_RESULT
     36 TALER_FAKEBANK_tbr_main_ (
     37   struct TALER_FAKEBANK_Handle *h,
     38   struct MHD_Connection *connection,
     39   const char *account,
     40   const char *url,
     41   const char *method,
     42   const char *upload_data,
     43   size_t *upload_data_size,
     44   void **con_cls)
     45 {
     46   GNUNET_log (GNUNET_ERROR_TYPE_INFO,
     47               "Fakebank - Anastasis API: serving URL `%s' for account `%s'\n",
     48               url,
     49               account);
     50 
     51   if ( (0 == strcmp (url,
     52                      "/config")) &&
     53        (0 == strcasecmp (method,
     54                          MHD_HTTP_METHOD_GET)) )
     55   {
     56     /* GET /config */
     57     return TALER_MHD_REPLY_JSON_PACK (
     58       connection,
     59       MHD_HTTP_OK,
     60       GNUNET_JSON_pack_string ("version",
     61                                "0:0:0"),
     62       GNUNET_JSON_pack_string ("currency",
     63                                h->currency),
     64       GNUNET_JSON_pack_string ("implementation",
     65                                "urn:net:taler:specs:bank:fakebank"),
     66       GNUNET_JSON_pack_string ("name",
     67                                "taler-revenue"));
     68   }
     69 
     70   if (0 == strcasecmp (method,
     71                        MHD_HTTP_METHOD_GET))
     72   {
     73     if ( (0 == strcmp (url,
     74                        "/history")) &&
     75          (NULL != account) )
     76       return TALER_FAKEBANK_tbr_get_history (h,
     77                                              connection,
     78                                              account,
     79                                              con_cls);
     80     if (0 == strcmp (url,
     81                      "/"))
     82       return TALER_FAKEBANK_tbr_get_root (h,
     83                                           connection);
     84   }
     85   /* Unexpected URL path, just close the connection. */
     86   TALER_LOG_ERROR ("Breaking URL: %s %s\n",
     87                    method,
     88                    url);
     89   GNUNET_break_op (0);
     90   return TALER_MHD_reply_with_error (
     91     connection,
     92     MHD_HTTP_NOT_FOUND,
     93     TALER_EC_GENERIC_ENDPOINT_UNKNOWN,
     94     url);
     95 }