summaryrefslogtreecommitdiff
path: root/src/backend
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2020-05-10 20:06:36 +0200
committerChristian Grothoff <christian@grothoff.org>2020-05-10 20:06:36 +0200
commita5da6d3cec3b090c5aa21255eed37fc7a3ca48ec (patch)
tree0f2a93abc26c9d53690864a47250035dbb167a14 /src/backend
parent47811a60b692e575274305d4cac429220d27a328 (diff)
downloadmerchant-a5da6d3cec3b090c5aa21255eed37fc7a3ca48ec.tar.gz
merchant-a5da6d3cec3b090c5aa21255eed37fc7a3ca48ec.tar.bz2
merchant-a5da6d3cec3b090c5aa21255eed37fc7a3ca48ec.zip
GET /transfers implementation
Diffstat (limited to 'src/backend')
-rw-r--r--src/backend/Makefile.am2
-rw-r--r--src/backend/taler-merchant-httpd.c7
-rw-r--r--src/backend/taler-merchant-httpd_private-get-instances-ID.c4
-rw-r--r--src/backend/taler-merchant-httpd_private-get-transfers.c47
-rw-r--r--src/backend/taler-merchant-httpd_private-get-transfers.h25
5 files changed, 51 insertions, 34 deletions
diff --git a/src/backend/Makefile.am b/src/backend/Makefile.am
index 2512143d..3127ab24 100644
--- a/src/backend/Makefile.am
+++ b/src/backend/Makefile.am
@@ -41,6 +41,8 @@ taler_merchant_httpd_SOURCES = \
taler-merchant-httpd_private-get-products-ID.h \
taler-merchant-httpd_private-get-orders.c \
taler-merchant-httpd_private-get-orders.h \
+ taler-merchant-httpd_private-get-transfers.c \
+ taler-merchant-httpd_private-get-transfers.h \
taler-merchant-httpd_private-patch-instances-ID.c \
taler-merchant-httpd_private-patch-instances-ID.h \
taler-merchant-httpd_private-patch-products-ID.c \
diff --git a/src/backend/taler-merchant-httpd.c b/src/backend/taler-merchant-httpd.c
index c5dbacd2..e3640112 100644
--- a/src/backend/taler-merchant-httpd.c
+++ b/src/backend/taler-merchant-httpd.c
@@ -38,6 +38,7 @@
#include "taler-merchant-httpd_private-get-products-ID.h"
#include "taler-merchant-httpd_private-get-orders.h"
// #include "taler-merchant-httpd_private-get-orders-ID.h"
+#include "taler-merchant-httpd_private-get-transfers.h"
#include "taler-merchant-httpd_private-patch-instances-ID.h"
#include "taler-merchant-httpd_private-patch-products-ID.h"
#include "taler-merchant-httpd_private-post-instances.h"
@@ -838,6 +839,12 @@ url_handler (void *cls,
.method = MHD_HTTP_METHOD_POST,
.handler = &TMH_private_post_transfers
},
+ /* GET /transfers: */
+ {
+ .url_prefix = "/transfers",
+ .method = MHD_HTTP_METHOD_GET,
+ .handler = &TMH_private_get_transfers
+ },
{
NULL
}
diff --git a/src/backend/taler-merchant-httpd_private-get-instances-ID.c b/src/backend/taler-merchant-httpd_private-get-instances-ID.c
index b6993791..bf248b15 100644
--- a/src/backend/taler-merchant-httpd_private-get-instances-ID.c
+++ b/src/backend/taler-merchant-httpd_private-get-instances-ID.c
@@ -51,7 +51,7 @@ TMH_private_get_instances_ID (const struct TMH_RequestHandler *rh,
json_array_append_new (
ja,
json_pack (
- "{s:O, s:o, s:O, s:o}",
+ "{s:O, s:o, s:O, s:b}",
"payto_uri",
json_object_get (wm->j_wire,
"payto_uri"),
@@ -61,7 +61,7 @@ TMH_private_get_instances_ID (const struct TMH_RequestHandler *rh,
json_object_get (wm->j_wire,
"salt"),
"active",
- (wm->active) ? json_true () : json_false ())));
+ (wm->active) ? 1 : 0)));
}
return TALER_MHD_reply_json_pack (
diff --git a/src/backend/taler-merchant-httpd_private-get-transfers.c b/src/backend/taler-merchant-httpd_private-get-transfers.c
index 23163129..0bf53f3d 100644
--- a/src/backend/taler-merchant-httpd_private-get-transfers.c
+++ b/src/backend/taler-merchant-httpd_private-get-transfers.c
@@ -21,13 +21,8 @@
*/
#include "platform.h"
#include <jansson.h>
-#include <taler/taler_signatures.h>
#include <taler/taler_json_lib.h>
-#include "taler-merchant-httpd.h"
-#include "taler-merchant-httpd_mhd.h"
-#include "taler-merchant-httpd_auditors.h"
-#include "taler-merchant-httpd_exchanges.h"
-#include "taler-merchant-httpd_track-transfer.h"
+#include "taler-merchant-httpd_private-get-transfers.h"
/**
@@ -54,11 +49,31 @@ transfer_cb (void *cls,
const char *exchange_url,
uint64_t transfer_serial_id,
struct GNUNET_TIME_Absolute execution_time,
- enum TALER_MERCHANTDB_YesNoAll verified)
+ bool verified,
+ bool confirmed)
{
json_t *ja = cls;
-
-
+ json_t *r;
+
+ r = json_pack ("{s:o, s:o, s:s, s:s, s:I, s:b, s:b}",
+ "credit_amount", TALER_JSON_from_amount (credit_amount),
+ "wtid", GNUNET_JSON_from_data_auto (wtid),
+ "payto_uri", payto_uri,
+ "exchange_url", exchange_url,
+ "transfer_serial_id", (json_int_t) transfer_serial_id,
+ "verified", verified ? 1 : 0,
+ "confirmed", confirmed ? 1 : 0);
+ GNUNET_assert (NULL != r);
+ if (GNUNET_TIME_UNIT_FOREVER_ABS.abs_value_us !=
+ execution_time.abs_value_us)
+ GNUNET_assert (0 ==
+ json_object_set_new (
+ r,
+ "execution_time",
+ GNUNET_JSON_from_time_abs (execution_time)));
+ GNUNET_assert (0 ==
+ json_array_append_new (ja,
+ r));
}
@@ -150,7 +165,7 @@ TMH_private_get_transfers (const struct TMH_RequestHandler *rh,
unsigned long long o;
if (1 !=
- sscanf (limit_s,
+ sscanf (offset_s,
"%llu%1s",
&o,
dummy))
@@ -200,7 +215,7 @@ TMH_private_get_transfers (const struct TMH_RequestHandler *rh,
"verified");
}
- db->preflight (db->cls);
+ TMH_db->preflight (TMH_db->cls);
{
json_t *ja;
enum GNUNET_DB_QueryStatus qs;
@@ -225,13 +240,13 @@ TMH_private_get_transfers (const struct TMH_RequestHandler *rh,
GNUNET_break (GNUNET_DB_STATUS_HARD_ERROR == qs);
return TALER_MHD_reply_with_error (connection,
MHD_HTTP_INTERNAL_SERVER_ERROR,
- TALER_EC_GET_TRANSFERS_DB_FETCH_DEPOSIT_ERROR,
+ TALER_EC_GET_TRANSFERS_DB_FETCH_ERROR,
"Fail to query database about transfers");
}
- return MHD_MHD_reply_json_pack (connection,
- MHD_HTTP_OK,
- "{s:o}",
- "transfers", ja);
+ return TALER_MHD_reply_json_pack (connection,
+ MHD_HTTP_OK,
+ "{s:o}",
+ "transfers", ja);
}
}
diff --git a/src/backend/taler-merchant-httpd_private-get-transfers.h b/src/backend/taler-merchant-httpd_private-get-transfers.h
index 0463295e..556e8558 100644
--- a/src/backend/taler-merchant-httpd_private-get-transfers.h
+++ b/src/backend/taler-merchant-httpd_private-get-transfers.h
@@ -14,36 +14,29 @@
TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
/**
- * @file backend/taler-merchant-httpd_track-transfer.h
- * @brief headers for /track/transfer handler
+ * @file backend/taler-merchant-httpd_private-get-transfers.h
+ * @brief headers for GET /transfers handler
* @author Christian Grothoff
* @author Marcello Stanisci
*/
-#ifndef TALER_MERCHANT_HTTPD_TRACK_TRANSFER_H
-#define TALER_MERCHANT_HTTPD_TRACK_TRANSFER_H
+#ifndef TALER_MERCHANT_HTTPD_PRIVATE_GET_TRANSFERS_H
+#define TALER_MERCHANT_HTTPD_PRIVATE_GET_TRANSFERS_H
#include <microhttpd.h>
#include "taler-merchant-httpd.h"
+
/**
- * Manages a /track/transfer call, thus it calls the /wire/transfer
- * offered by the exchange in order to return the set of transfers
- * (of coins) associated with a given wire transfer
+ * Manages a GET /private/transfers call.
*
* @param rh context of the handler
* @param connection the MHD connection to handle
- * @param[in,out] connection_cls the connection's closure (can be updated)
- * @param upload_data upload data
- * @param[in,out] upload_data_size number of bytes (left) in @a upload_data
- * @param mi merchant backend instance, never NULL
+ * @param[in,out] hc context with further information about the request
* @return MHD result code
*/
MHD_RESULT
-MH_handler_track_transfer (struct TMH_RequestHandler *rh,
+TMH_private_get_transfers (const struct TMH_RequestHandler *rh,
struct MHD_Connection *connection,
- void **connection_cls,
- const char *upload_data,
- size_t *upload_data_size,
- struct MerchantInstance *mi);
+ struct TMH_HandlerContext *hc);
#endif