exchange

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

exchange_api_curl_defaults.c (2249B)


      1 /*
      2   This file is part of TALER
      3   Copyright (C) 2014-2018, 2021 Taler Systems SA
      4 
      5   TALER is free software; you can redistribute it and/or modify it under the
      6   terms of the GNU General Public License as published by the Free Software
      7   Foundation; either version 3, or (at your option) any later version.
      8 
      9   TALER is distributed in the hope that it will be useful, but WITHOUT ANY
     10   WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
     11   A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
     12 
     13   You should have received a copy of the GNU General Public License along with
     14   TALER; see the file COPYING.  If not, see
     15   <http://www.gnu.org/licenses/>
     16 */
     17 /**
     18  * @file lib/exchange_api_curl_defaults.c
     19  * @brief curl easy handle defaults
     20  * @author Florian Dold
     21  */
     22 #include "taler/taler_curl_lib.h"
     23 #include "exchange_api_curl_defaults.h"
     24 #include "taler/exchange/common.h"
     25 
     26 
     27 /**
     28  * Global options for HTTP requests.
     29  */
     30 static enum TALER_EXCHANGE_GlobalOptions eglobal_options;
     31 
     32 
     33 void
     34 TALER_EXCHANGE_setup (enum TALER_EXCHANGE_GlobalOptions go)
     35 {
     36   eglobal_options = go;
     37 }
     38 
     39 
     40 CURL *
     41 TALER_EXCHANGE_curl_easy_get_ (const char *url)
     42 {
     43   CURL *eh;
     44 
     45   eh = curl_easy_init ();
     46   if (NULL == eh)
     47   {
     48     GNUNET_break (0);
     49     return NULL;
     50   }
     51   GNUNET_assert (CURLE_OK ==
     52                  curl_easy_setopt (eh,
     53                                    CURLOPT_URL,
     54                                    url));
     55   TALER_curl_set_secure_redirect_policy (eh,
     56                                          url);
     57   /* Enable compression (using whatever curl likes), see
     58      https://curl.se/libcurl/c/CURLOPT_ACCEPT_ENCODING.html  */
     59   GNUNET_break (CURLE_OK ==
     60                 curl_easy_setopt (eh,
     61                                   CURLOPT_ACCEPT_ENCODING,
     62                                   ""));
     63   GNUNET_assert (CURLE_OK ==
     64                  curl_easy_setopt (eh,
     65                                    CURLOPT_TCP_FASTOPEN,
     66                                    1L));
     67   if (TALER_EXCHANGE_GO_FORCE_HTTP1_1 & eglobal_options)
     68     GNUNET_assert (CURLE_OK ==
     69                    curl_easy_setopt (eh,
     70                                      CURLOPT_HTTP_VERSION,
     71                                      CURL_HTTP_VERSION_1_1));
     72   return eh;
     73 }