diff options
author | Christian Grothoff <christian@grothoff.org> | 2017-05-04 15:18:43 +0200 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2017-05-04 15:18:43 +0200 |
commit | 234dbcc7b71ac98e7f63393e454377d1e2ae11c7 (patch) | |
tree | 3a1c687c7ccc10d7e14363f0802e16a6f9a60a1c /src/bank-lib/bank_api_common.c | |
parent | 57502edf1549e3f1aa26f866681077290b692269 (diff) | |
download | exchange-234dbcc7b71ac98e7f63393e454377d1e2ae11c7.tar.xz |
switch bank api to new authentication method API
Diffstat (limited to 'src/bank-lib/bank_api_common.c')
-rw-r--r-- | src/bank-lib/bank_api_common.c | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/src/bank-lib/bank_api_common.c b/src/bank-lib/bank_api_common.c new file mode 100644 index 000000000..0476379d8 --- /dev/null +++ b/src/bank-lib/bank_api_common.c @@ -0,0 +1,88 @@ +/* + This file is part of TALER + Copyright (C) 2015, 2016, 2017 GNUnet e.V. + + 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 + <http://www.gnu.org/licenses/> +*/ +/** + * @file bank-lib/bank_api_common.c + * @brief Common functions for the bank API + * @author Christian Grothoff + */ +#include "platform.h" +#include "bank_api_common.h" + + +/** + * Append HTTP key-value pair to curl header list. + * + * @param hdr list to append to, can be NULL + * @param key key to append + * @param value value to append + * @return new list, NULL on error + */ +static struct curl_slist * +append (struct curl_slist *hdr, + const char *key, + const char *value) +{ + char *str; + struct curl_slist *ret; + + GNUNET_asprintf (&str, + "%s: %s", + key, + value); + ret = curl_slist_append (hdr, + str); + GNUNET_free (str); + if (NULL == ret) + { + GNUNET_break (0); + curl_slist_free_all (hdr); + return NULL; + } + return ret; +} + + +/** + * Build authentication header from @a auth. + * + * @param auth authentication data to use + * @return NULL on error, otherwise curl headers to use + */ +struct curl_slist * +TALER_BANK_make_auth_header_ (const struct TALER_BANK_AuthenticationData *auth) +{ + struct curl_slist *authh; + + switch (auth->method) + { + case TALER_BANK_AUTH_NONE: + return NULL; + case TALER_BANK_AUTH_BASIC: + authh = append (NULL, + "X-Taler-Bank-Username", + auth->details.basic.username); + if (NULL == authh) + return NULL; + authh = append (authh, + "X-Taler-Bank-Password", + auth->details.basic.password); + break; + } + return authh; +} + +/* end of bank_api_common.c */ |