diff options
Diffstat (limited to 'src/backend/taler-merchant-httpd_helper.h')
-rw-r--r-- | src/backend/taler-merchant-httpd_helper.h | 132 |
1 files changed, 123 insertions, 9 deletions
diff --git a/src/backend/taler-merchant-httpd_helper.h b/src/backend/taler-merchant-httpd_helper.h index 5cee97cc..6783b9d4 100644 --- a/src/backend/taler-merchant-httpd_helper.h +++ b/src/backend/taler-merchant-httpd_helper.h @@ -1,6 +1,6 @@ /* This file is part of TALER - Copyright (C) 2021 Taler Systems SA + Copyright (C) 2021-2023 Taler Systems SA TALER is free software; you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software @@ -13,7 +13,6 @@ You should have received a copy of the GNU Affero General Public License along with TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/> */ - /** * @file taler-merchant-httpd_helper.h * @brief helpers for shared logic @@ -28,13 +27,13 @@ #include "taler-merchant-httpd.h" /** - * check @a payto_uris for well-formedness + * check @a accounts for well-formedness * - * @param payto_uris JSON array of payto URIs (presumably) - * @return true if they are all valid URIs (and this is an array of strings) + * @param accounts JSON array of merchant accounts (presumably) + * @return true if they are all valid accounts */ bool -TMH_payto_uri_array_valid (const json_t *payto_uris); +TMH_accounts_array_valid (const json_t *accounts); /** @@ -103,15 +102,45 @@ TMH_template_contract_valid (const json_t *template_contract); * Setup new wire method for the given @ payto_uri. * * @param payto_uri already validated payto URI + * @param credit_facade_url where to download credit information for this account (can be NULL) + * @param credit_facade_credentials credentials for the @a credit_facade_url * @return new wire method object, never fails */ struct TMH_WireMethod * -TMH_setup_wire_account (const char *payto_uri); +TMH_setup_wire_account ( + const char *payto_uri, + const char *credit_facade_url, + const json_t *credit_facade_credentials); + /** - * FIXME: document + * Test if JSON spec @a account for a wire method is equal to the given @a wm. + * + * @param account JSON spec for a merchant account + * @param wm known wire method + * @return #GNUNET_YES if both specifications are equal + * #GNUNET_NO if the specifications are for + * the same account but differ in the credit facade + * #GNUNET_SYSERR if the specs are for different accounts + * or if @a account is malformed */ +enum GNUNET_GenericReturnValue +TMH_cmp_wire_account ( + const json_t *account, + const struct TMH_WireMethod *wm); + +/** + * Check that the provided authentication configuration + * is valid. + * + * @param connection connection to use for returning errors + * @param jauth JSON with authentication data + * @param[out] auth_token set to the authentication token + * @return #GNUNET_OK on success, + * #GNUNET_NO if an error was returned on @a connection + * #GNUNET_SYSERR if we failed to return an error on @a connection + */ enum GNUNET_GenericReturnValue TMH_check_auth_config (struct MHD_Connection *connection, const json_t *jauth, @@ -130,6 +159,79 @@ TMH_uuid_from_string (const char *uuids, /** + * Initializes a buffer with + * the ``http[s]://$HOST/[$PATH/][instances/$INSTANCE/]`` + * string using $HOST and $PATH from @a connection. + * + * @param[in] connection connection to base the construction on + * @param instance instance to set, NULL for none + * @param[out] buf buffer to initialize + * @return #GNUNET_OK on success + */ +enum GNUNET_GenericReturnValue +TMH_base_url_by_connection (struct MHD_Connection *connection, + const char *instance, + struct GNUNET_Buffer *buf); + + +/** + * Initializes a buffer with + * the ``taler[+http]://$METHOD/$HOST/[instances/$INSTANCE/]`` + * string using $HOST from @a connection. + * + * @param[in] connection connection to base the construction on + * @param method taler-URI method to inject + * @param instance instance to set, NULL for none + * @param[out] buf buffer to initialize + * @return #GNUNET_OK on success + */ +enum GNUNET_GenericReturnValue +TMH_taler_uri_by_connection (struct MHD_Connection *connection, + const char *method, + const char *instance, + struct GNUNET_Buffer *buf); + + +/** + * Create a taler://pay/ URI for the given @a con and @a order_id + * and @a session_id and @a instance_id. + * + * @param con HTTP connection + * @param order_id the order id + * @param session_id session, may be NULL + * @param instance_id instance, may be "default" + * @param claim_token claim token for the order, may be NULL + * @return corresponding taler://pay/ URI, or NULL on missing "host" + */ +char * +TMH_make_taler_pay_uri (struct MHD_Connection *con, + const char *order_id, + const char *session_id, + const char *instance_id, + struct TALER_ClaimTokenP *claim_token); + +/** + * Create a http(s) URL for the given @a con and @a order_id + * and @a instance_id to display the /orders/{order_id} page. + * + * @param con HTTP connection + * @param order_id the order id + * @param session_id session, may be NULL + * @param instance_id instance, may be "default" + * @param claim_token claim token for the order, may be NULL + * @param h_contract contract hash for authentication, may be NULL + * @return corresponding http(s):// URL, or NULL on missing "host" + */ +char * +TMH_make_order_status_url (struct MHD_Connection *con, + const char *order_id, + const char *session_id, + const char *instance_id, + struct TALER_ClaimTokenP *claim_token, + struct TALER_PrivateContractHashP *h_contract); + + +/** * Put data from an exchange's HTTP response into * a JSON reply * @@ -144,7 +246,6 @@ TMH_uuid_from_string (const char *uuids, GNUNET_JSON_pack_object_incref ("exchange_reply", (json_t *) (hr)->reply)) - /** * TMH_trigger_webhook is a function that need to be use when someone * pay. Merchant need to have a notification. @@ -159,5 +260,18 @@ TMH_trigger_webhook (const char *instance, const json_t *args); +/** + * Return JSON array with all of the exchange accounts + * that support the given @a wire_method. + * + * @param master_pub master public key to match exchange by + * @param wire_method NULL for any + * @return JSON array with information about all matching accounts + */ +json_t * +TMH_exchange_accounts_by_method ( + const struct TALER_MasterPublicKeyP *master_pub, + const char *wire_method); + #endif |