commit b96f3468a51098fd24f90a8b6b2802a29b964aea
parent c7cb7f925cabba012bf25160b14e65f287059b18
Author: Marcello Stanisci <marcello.stanisci@inria.fr>
Date: Fri, 24 Jun 2016 16:50:39 +0200
adapting /track API to use merchant instances
Diffstat:
6 files changed, 38 insertions(+), 7 deletions(-)
diff --git a/src/backend/taler-merchant-httpd_contract.c b/src/backend/taler-merchant-httpd_contract.c
@@ -223,6 +223,15 @@ MH_handler_contract (struct TMH_RequestHandler *rh,
}
mi = get_instance (root);
+ if (NULL == mi)
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ "Not able to find the specified receiver\n");
+ json_decref (root);
+ return TMH_RESPONSE_reply_external_error (connection,
+ "Unknown receiver given");
+ }
+
/* add fields to the contract that the backend should provide */
json_object_set (jcontract,
"exchanges",
diff --git a/src/include/taler_merchant_service.h b/src/include/taler_merchant_service.h
@@ -337,6 +337,7 @@ typedef void
*
* @param ctx execution context
* @param backend_uri base URI of the backend
+ * @param receiver which merchant instance is going to be tracked
* @param wtid base32 string indicating a wtid
* @param exchange base URL of the exchange in charge of returning the wanted information
* @param track_transfer_cb the callback to call when a reply for this request is available
@@ -346,6 +347,7 @@ typedef void
struct TALER_MERCHANT_TrackTransferHandle *
TALER_MERCHANT_track_transfer (struct GNUNET_CURL_Context *ctx,
const char *backend_uri,
+ const char *receiver,
const struct TALER_WireTransferIdentifierRawP *wtid,
const char *exchange_uri,
TALER_MERCHANT_TrackTransferCallback track_transfer_cb,
@@ -446,6 +448,7 @@ typedef void
*
* @param ctx execution context
* @param backend_uri base URI of the backend
+ * @param receiver which merchant instance is going to be tracked
* @param transaction_id which transaction should we trace
* @param track_transaction_cb the callback to call when a reply for this request is available
* @param track_transaction_cb_cls closure for @a track_transaction_cb
@@ -454,6 +457,7 @@ typedef void
struct TALER_MERCHANT_TrackTransactionHandle *
TALER_MERCHANT_track_transaction (struct GNUNET_CURL_Context *ctx,
const char *backend_uri,
+ const char *receiver,
uint64_t transaction_id,
TALER_MERCHANT_TrackTransactionCallback track_transaction_cb,
void *track_transaction_cb_cls);
diff --git a/src/lib/merchant_api_track_transaction.c b/src/lib/merchant_api_track_transaction.c
@@ -230,6 +230,7 @@ handle_track_transaction_finished (void *cls,
*
* @param ctx execution context
* @param backend_uri base URI of the backend
+ * @param receiver which merchant instance is going to be tracked
* @param transaction_id which transaction should we trace
* @param track_transaction_cb the callback to call when a reply for this request is available
* @param track_transaction_cb_cls closure for @a track_transaction_cb
@@ -238,6 +239,7 @@ handle_track_transaction_finished (void *cls,
struct TALER_MERCHANT_TrackTransactionHandle *
TALER_MERCHANT_track_transaction (struct GNUNET_CURL_Context *ctx,
const char *backend_uri,
+ const char *receiver,
uint64_t transaction_id,
TALER_MERCHANT_TrackTransactionCallback track_transaction_cb,
void *track_transaction_cb_cls)
diff --git a/src/lib/merchant_api_track_transfer.c b/src/lib/merchant_api_track_transfer.c
@@ -272,6 +272,7 @@ handle_track_transfer_finished (void *cls,
*
* @param ctx execution context
* @param backend_uri base URI of the backend
+ * @param receiver which merchant instance is going to be tracked
* @param wtid base32 string indicating a wtid
* @param exchange base URL of the exchange in charge of returning the wanted information
* @param track_transfer_cb the callback to call when a reply for this request is available
@@ -281,6 +282,7 @@ handle_track_transfer_finished (void *cls,
struct TALER_MERCHANT_TrackTransferHandle *
TALER_MERCHANT_track_transfer (struct GNUNET_CURL_Context *ctx,
const char *backend_uri,
+ const char *receiver,
const struct TALER_WireTransferIdentifierRawP *wtid,
const char *exchange_uri,
TALER_MERCHANT_TrackTransferCallback track_transfer_cb,
diff --git a/src/lib/test_merchant_api.c b/src/lib/test_merchant_api.c
@@ -63,7 +63,7 @@ static struct GNUNET_CURL_Context *ctx;
/**
* Which merchant instance we will run the testcase for
*/
-static char *instance;
+static char *receiver = NULL;
/**
@@ -1442,6 +1442,10 @@ interpreter_run (void *cls)
proposal = json_loads (cmd->details.contract.proposal,
JSON_REJECT_DUPLICATES,
&error);
+ if (NULL != receiver)
+ json_object_set_new (proposal,
+ "receiver",
+ json_string (receiver));
if (NULL == proposal)
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
@@ -1564,11 +1568,13 @@ interpreter_run (void *cls)
return;
}
}
-
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Using receiver '%s'\n",
+ receiver);
cmd->details.pay.ph
= TALER_MERCHANT_pay_wallet (ctx,
MERCHANT_URI,
- NULL,
+ receiver,
&h_contract,
transaction_id,
&total_amount,
@@ -1663,6 +1669,7 @@ interpreter_run (void *cls)
cmd->details.track_transfer.tdo =
TALER_MERCHANT_track_transfer (ctx,
MERCHANT_URI,
+ receiver,
&ref->details.check_bank_transfer.wtid,
EXCHANGE_URI,
&track_transfer_cb,
@@ -1675,6 +1682,7 @@ interpreter_run (void *cls)
cmd->details.track_transaction.tth =
TALER_MERCHANT_track_transaction (ctx,
MERCHANT_URI,
+ receiver,
ref->details.pay.transaction_id,
&track_transaction_cb,
is);
@@ -1845,7 +1853,7 @@ do_shutdown (void *cls)
is->task = NULL;
}
GNUNET_free (is);
- GNUNET_free_non_null (instance);
+ GNUNET_free_non_null (receiver);
if (NULL != exchange)
{
TALER_EXCHANGE_disconnect (exchange);
@@ -2161,10 +2169,10 @@ main (int argc,
if (GNUNET_OK == GNUNET_CONFIGURATION_get_value_string (cfg,
"merchant",
"INSTANCE",
- &instance))
+ &receiver))
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Using non default instance '%s'\n",
- instance);
+ "Using non default receiver '%s'\n",
+ receiver);
db = TALER_MERCHANTDB_plugin_load (cfg);
if (NULL == db)
diff --git a/src/lib/test_merchant_api.conf b/src/lib/test_merchant_api.conf
@@ -51,6 +51,12 @@ KEYFILE = test_merchant.priv
[default-wireformat]
TEST_RESPONSE_FILE = ${TALER_CONFIG_HOME}/merchant/wire/test.json
+[merchant-instance-tor]
+KEYFILE = test_merchant.priv
+
+[tor-wireformat]
+TEST_RESPONSE_FILE = ${TALER_CONFIG_HOME}/merchant/wire/test.json
+
# Auditors must be in sections "auditor-", the rest of the section
# name could be anything.
[merchant-auditor-ezb]