summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcello Stanisci <marcello.stanisci@inria.fr>2017-03-13 15:24:05 +0100
committerMarcello Stanisci <marcello.stanisci@inria.fr>2017-03-13 15:24:05 +0100
commit41878462c87141f2c0b782bcfd68e8c7ce30ce11 (patch)
tree9e5061c5d5279cb5f8ae1a935150702bf3100acc
parent561deba2ee2a742cfa0c0a809e14965b7465c37a (diff)
downloadmerchant-41878462c87141f2c0b782bcfd68e8c7ce30ce11.tar.gz
merchant-41878462c87141f2c0b782bcfd68e8c7ce30ce11.tar.bz2
merchant-41878462c87141f2c0b782bcfd68e8c7ce30ce11.zip
Elaborating /track/transfer response for cached responses
as well.
-rw-r--r--src/backend/taler-merchant-httpd_track-transfer.c38
-rw-r--r--src/lib/merchant_api_track_transfer.c2
-rw-r--r--src/lib/test_merchant_api.c4
3 files changed, 28 insertions, 16 deletions
diff --git a/src/backend/taler-merchant-httpd_track-transfer.c b/src/backend/taler-merchant-httpd_track-transfer.c
index ecd51bd0..26cdff67 100644
--- a/src/backend/taler-merchant-httpd_track-transfer.c
+++ b/src/backend/taler-merchant-httpd_track-transfer.c
@@ -249,7 +249,8 @@ transform_response (const json_t *result)
struct TALER_Amount iter_fee;
struct Entry *current_entry;
- /* TODO/FIXME Free the values in hashmap! */
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Transforming /track/transfer response.\n");
struct GNUNET_JSON_Specification spec[] = {
TALER_JSON_spec_amount ("deposit_value", &iter_value),
@@ -320,18 +321,10 @@ transform_response (const json_t *result)
result_mod = json_copy ((struct json_t *) result);
json_object_del (result_mod, "deposits");
- json_object_set (result_mod, "deposits", deposits_response);
-
- /**
- * Missing actions:
- *
- * 1) Take the sums in the map and convert them into
- * appropriate JSON (x).
- * 2) Translate h_proposal_data into order_id and place
- * it somewhere in the response.
- * 3) Return result (x).
- */
-
+ json_object_set (result_mod, "deposits_sums", deposits_response);
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Returning: '%s'.\n",
+ json_dumps (result_mod, JSON_INDENT (1)));
goto cleanup;
cleanup:
@@ -340,6 +333,9 @@ transform_response (const json_t *result)
NULL);
GNUNET_JSON_parse_free (spec);
GNUNET_CONTAINER_multihashmap_destroy (map);
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Returning: '%s'.\n",
+ json_dumps (result_mod, JSON_INDENT (1)));
return result_mod;
}
@@ -589,7 +585,10 @@ wire_transfer_cb (void *cls,
}
}
rctx->original_response = NULL;
- /* FIXME, implement response transformator. Handle error as well. */
+
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "About to call tracks transformator.\n");
+
if (NULL == (jresponse = transform_response (json)))
{
resume_track_transfer_with_response
@@ -682,9 +681,18 @@ proof_cb (void *cls,
const json_t *proof)
{
struct TrackTransferContext *rctx = cls;
+ json_t *transformed_response;
+
+ if (NULL == (transformed_response = transform_response (proof)))
+ {
+ rctx->response_code = MHD_HTTP_INTERNAL_SERVER_ERROR;
+ rctx->response = TMH_RESPONSE_make_internal_error (TALER_EC_TRACK_TRANSFER_JSON_RESPONSE_ERROR,
+ "Fail to elaborate response.");
+ return;
+ }
rctx->response_code = MHD_HTTP_OK;
- rctx->response = TMH_RESPONSE_make_json (proof);
+ rctx->response = TMH_RESPONSE_make_json (transformed_response);
}
diff --git a/src/lib/merchant_api_track_transfer.c b/src/lib/merchant_api_track_transfer.c
index f9a8709f..e34730fd 100644
--- a/src/lib/merchant_api_track_transfer.c
+++ b/src/lib/merchant_api_track_transfer.c
@@ -95,7 +95,7 @@ check_track_transfer_response_ok (struct TALER_MERCHANT_TrackTransferHandle *wdh
TALER_JSON_spec_amount ("total", &total_amount),
GNUNET_JSON_spec_fixed_auto ("merchant_pub", &merchant_pub),
GNUNET_JSON_spec_fixed_auto ("H_wire", &h_wire),
- GNUNET_JSON_spec_json ("deposits", &deposits),
+ GNUNET_JSON_spec_json ("deposits_sums", &deposits),
GNUNET_JSON_spec_fixed_auto ("exchange_pub", &exchange_pub),
GNUNET_JSON_spec_end()
};
diff --git a/src/lib/test_merchant_api.c b/src/lib/test_merchant_api.c
index e59d542e..3688cd7b 100644
--- a/src/lib/test_merchant_api.c
+++ b/src/lib/test_merchant_api.c
@@ -1205,6 +1205,10 @@ track_transfer_cb (void *cls,
struct InterpreterState *is = cls;
struct Command *cmd = &is->commands[is->ip];
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Tracked transfers: '%s'.\n",
+ json_dumps (json, JSON_INDENT (1)));
+
cmd->details.track_transfer.tdo = NULL;
if (cmd->expected_response_code != http_status)
{