diff options
author | Christian Grothoff <christian@grothoff.org> | 2023-05-03 15:46:00 +0200 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2023-05-03 15:46:00 +0200 |
commit | 634fc3090574ca303d0fe30ad3189c889782d2cb (patch) | |
tree | 3ffff8b21f2acc6647ec0e6aa94a0977caa5d59c /src/backend/taler-merchant-httpd_get-orders-ID.c | |
parent | fbba13c83b7e209962558c9207358f607074a6da (diff) | |
download | merchant-634fc3090574ca303d0fe30ad3189c889782d2cb.tar.gz merchant-634fc3090574ca303d0fe30ad3189c889782d2cb.tar.bz2 merchant-634fc3090574ca303d0fe30ad3189c889782d2cb.zip |
expand merchant order logic to return exchanges trusted by the merchant and indicate priority based on exchange /wire respons availability and restrictions
Diffstat (limited to 'src/backend/taler-merchant-httpd_get-orders-ID.c')
-rw-r--r-- | src/backend/taler-merchant-httpd_get-orders-ID.c | 114 |
1 files changed, 23 insertions, 91 deletions
diff --git a/src/backend/taler-merchant-httpd_get-orders-ID.c b/src/backend/taler-merchant-httpd_get-orders-ID.c index ab4de015..498ad1c4 100644 --- a/src/backend/taler-merchant-httpd_get-orders-ID.c +++ b/src/backend/taler-merchant-httpd_get-orders-ID.c @@ -28,6 +28,7 @@ #include <taler/taler_templating_lib.h> #include <taler/taler_exchange_service.h> #include "taler-merchant-httpd_exchanges.h" +#include "taler-merchant-httpd_helper.h" #include "taler-merchant-httpd_get-orders-ID.h" #include "taler-merchant-httpd_mhd.h" #include "taler-merchant-httpd_qr.h" @@ -377,62 +378,26 @@ TMH_make_order_status_url (struct MHD_Connection *con, struct TALER_ClaimTokenP *claim_token, struct TALER_PrivateContractHashP *h_contract) { - const char *host; - const char *forwarded_host; - const char *uri_path; - struct GNUNET_Buffer buf = { 0 }; + struct GNUNET_Buffer buf; /* Number of query parameters written so far */ unsigned int num_qp = 0; - host = MHD_lookup_connection_value (con, - MHD_HEADER_KIND, - MHD_HTTP_HEADER_HOST); - forwarded_host = MHD_lookup_connection_value (con, - MHD_HEADER_KIND, - "X-Forwarded-Host"); - uri_path = MHD_lookup_connection_value (con, - MHD_HEADER_KIND, - "X-Forwarded-Prefix"); - if (NULL != forwarded_host) - host = forwarded_host; - if (NULL == host) - { - GNUNET_break (0); - return NULL; - } - if (NULL != strchr (host, '/')) - { - GNUNET_break_op (0); - return NULL; - } GNUNET_assert (NULL != instance_id); GNUNET_assert (NULL != order_id); - - if (GNUNET_NO == TALER_mhd_is_https (con)) - GNUNET_buffer_write_str (&buf, - "http://"); - else - GNUNET_buffer_write_str (&buf, - "https://"); - GNUNET_buffer_write_str (&buf, - host); - if (NULL != uri_path) - GNUNET_buffer_write_path (&buf, - uri_path); - if (0 != strcmp ("default", - instance_id)) + if (GNUNET_OK != + TMH_base_url_by_connection (con, + instance_id, + &buf)) { - GNUNET_buffer_write_path (&buf, - "instances"); - GNUNET_buffer_write_path (&buf, - instance_id); + GNUNET_break (0); + return NULL; } GNUNET_buffer_write_path (&buf, "/orders"); GNUNET_buffer_write_path (&buf, order_id); - if ((NULL != claim_token) && - (GNUNET_NO == GNUNET_is_zero (claim_token))) + if ( (NULL != claim_token) && + (! GNUNET_is_zero (claim_token)) ) { /* 'token=' for human readability */ GNUNET_buffer_write_str (&buf, @@ -480,60 +445,27 @@ TMH_make_taler_pay_uri (struct MHD_Connection *con, const char *instance_id, struct TALER_ClaimTokenP *claim_token) { - const char *host; - const char *forwarded_host; - const char *uri_path; - struct GNUNET_Buffer buf = { 0 }; + struct GNUNET_Buffer buf; - host = MHD_lookup_connection_value (con, - MHD_HEADER_KIND, - MHD_HTTP_HEADER_HOST); - forwarded_host = MHD_lookup_connection_value (con, - MHD_HEADER_KIND, - "X-Forwarded-Host"); - uri_path = MHD_lookup_connection_value (con, - MHD_HEADER_KIND, - "X-Forwarded-Prefix"); - if (NULL != forwarded_host) - host = forwarded_host; - if (NULL == host) - { - GNUNET_break (0); - return NULL; - } - if (NULL != strchr (host, '/')) - { - GNUNET_break_op (0); - return NULL; - } GNUNET_assert (NULL != instance_id); GNUNET_assert (NULL != order_id); - GNUNET_buffer_write_str (&buf, - "taler"); - if (GNUNET_NO == TALER_mhd_is_https (con)) - GNUNET_buffer_write_str (&buf, - "+http"); - GNUNET_buffer_write_str (&buf, - "://pay/"); - GNUNET_buffer_write_str (&buf, - host); - if (NULL != uri_path) - GNUNET_buffer_write_path (&buf, - uri_path); - if (0 != strcmp ("default", - instance_id)) + if (GNUNET_OK != + TMH_taler_uri_by_connection (con, + "pay", + instance_id, + &buf)) { - GNUNET_buffer_write_path (&buf, - "instances"); - GNUNET_buffer_write_path (&buf, - instance_id); + GNUNET_break (0); + return NULL; } GNUNET_buffer_write_path (&buf, order_id); GNUNET_buffer_write_path (&buf, - (session_id == NULL) ? "" : session_id); - if ((NULL != claim_token) && - (GNUNET_NO == GNUNET_is_zero (claim_token))) + (NULL == session_id) + ? "" + : session_id); + if ( (NULL != claim_token) && + (! GNUNET_is_zero (claim_token))) { /* Just 'c=' because this goes into QR codes, so this is more compact. */ |