[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-taler-mdb] 49/93: intermediary commit
From: |
gnunet |
Subject: |
[taler-taler-mdb] 49/93: intermediary commit |
Date: |
Mon, 18 Nov 2019 21:13:12 +0100 |
This is an automated email from the git hooks/post-receive script.
marco-boss pushed a commit to branch master
in repository taler-mdb.
commit a00c467cb8d170ce49ffb9011ff79d8f817147c5
Author: Christian Grothoff <address@hidden>
AuthorDate: Mon Nov 11 22:59:01 2019 +0100
intermediary commit
---
src/Makefile.am | 1 +
src/main.c | 55 +++++++++++++++++++++++++++++--------------------------
2 files changed, 30 insertions(+), 26 deletions(-)
diff --git a/src/Makefile.am b/src/Makefile.am
index 2feee4f..9eca344 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -10,6 +10,7 @@ taler_nfc_SOURCES = \
main.c
taler_nfc_LDADD = \
-ltalermerchant \
+ -ltalerjson \
-ltalerutil \
-lgnunetcurl \
-lgnunetutil \
diff --git a/src/main.c b/src/main.c
index a34353b..abf291c 100644
--- a/src/main.c
+++ b/src/main.c
@@ -42,7 +42,9 @@ along with
#include <errno.h>
#include <termios.h>
#include <nfc/nfc.h>
+#include <microhttpd.h>
#include <gnunet/gnunet_util_lib.h>
+#include <taler/taler_json_lib.h>
#include <taler/taler_merchant_service.h>
/**
@@ -72,12 +74,6 @@ along with
*/
#define APDU_NOT_FOUND "\x6a\x82"
-/* json order request keys */
-#define SNACK_JSON_REQ_ORDER "order"
-#define SNACK_JSON_REQ_SUMMARY "summary"
-#define SNACK_JSON_REQ_AMOUNT "amount"
-#define SNACK_JSON_REQ_FULFILLMENT "fulfillment_url"
-
/* curl auth header */
#define SNACK_CURL_AUTH_HEADER "Authorization"
@@ -89,13 +85,15 @@ static const uint8_t taler_aid[] = { 0xF0, 0x00, 0x54,
0x41, 0x4c, 0x45, 0x52 };
static const uint8_t select_file[] = { 0x00, 0xA4, 0x04, 0x00, 0x07 };
static const uint8_t put_data[] = { 0x00, 0xDA, 0x01, 0x00, 0x7c, 0x01 };
+#if FUTURE_FEATURES
/* tunneling */
static const uint8_t get_data[] = { 0x00, 0xCA, 0x01, 0x00, 0x00, 0x00 };
+#endif
struct Product
{
- const char *price;
+ struct TALER_Amount price;
const char *description;
char key;
};
@@ -152,17 +150,17 @@ static struct PaymentActivity *payment_activity;
*/
static struct Product products[] = {
{
- .price = "0.1",
+ // .price = "0.1",
.description = "Snickers",
.key = 's'
},
{
- .price = "0.1",
+ // .price = "0.1",
.description = "Twix",
.key = 't'
},
{
- .price = NULL,
+ // .price = NULL,
.description = NULL,
.key = '\0'
}
@@ -670,26 +668,31 @@ launch_payment (const struct Product *product)
{
struct PaymentActivity *pa;
json_t *orderReq;
- char *amountStr;
char *fulflmntUrl;
-
- /* create the string representing the amount, e.g. "KUDOS:2.5" */
- GNUNET_asprintf (&amountStr,
- "%s:%s",
- currency,
- product->price);
+ struct GNUNET_ShortHashCode uuid;
+ char *uuid_s;
+
+ /* We need to ensure that every fulfillment URL is unique;
+ most easily done by adding a random nonce, as we may
+ not have a reliable counter or clock on the machine */
+ GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_NONCE,
+ &uuid,
+ sizeof (uuid));
+ uuid_s = GNUNET_STRINGS_data_to_string_alloc (&uuid,
+ sizeof (uuid));
/* create the fulfillment url, e.g.
"taler://fulfillment-success/Enjoy+your+ice+cream!"; */
GNUNET_asprintf (&fulflmntUrl,
- "%s%s%s!",
+ "%s%s%s#%s",
fulfillmentUrl,
fulfillmentMsg,
- product->description);
+ product->description,
+ uuid_s);
+ GNUNET_free (uuid_s);
/* create the json object for the order request */
orderReq = json_pack ("{ s:s, s:s, s:s }",
- SNACK_JSON_REQ_SUMMARY, product->description,
- SNACK_JSON_REQ_AMOUNT, amountStr,
- SNACK_JSON_REQ_FULFILLMENT, fulflmntUrl);
- GNUNET_free (amountStr);
+ "summary", product->description,
+ "amount", TALER_JSON_from_amount (&product->price),
+ "fulfillment_url", fulflmntUrl);
GNUNET_free (fulflmntUrl);
if (NULL == orderReq)
{
@@ -755,7 +758,7 @@ read_keyboard_command (void *cls)
start_read_keyboard ();
return;
}
- for (unsigned int i = 0; NULL != products[i].price; i++)
+ for (unsigned int i = 0; NULL != products[i].description; i++)
if (((char) input) == products[i].key)
{
payment_activity = launch_payment (&products[i]);
@@ -775,7 +778,7 @@ start_read_keyboard ()
struct GNUNET_DISK_FileHandle fh = { STDIN_FILENO };
GNUNET_assert (NULL == keyboard_task);
- for (unsigned int i = 0; NULL != products[i].price; i++)
+ for (unsigned int i = 0; NULL != products[i].description; i++)
printf ("'%c' to buy %s\n",
products[i].key,
products[i].description);
@@ -838,7 +841,7 @@ run (void *cls,
}
GNUNET_asprintf (&authorization,
"%s: %s",
- SNACK_CURL_AUTH_HEADER,
+ MHD_HTTP_HEADER_AUTHORIZATION,
auth);
GNUNET_free (auth);
}
--
To stop receiving notification emails like this one, please contact
address@hidden.
- [taler-taler-mdb] 53/93: bug detected, see README, (continued)
- [taler-taler-mdb] 53/93: bug detected, see README, gnunet, 2019/11/18
- [taler-taler-mdb] 60/93: fix, gnunet, 2019/11/18
- [taler-taler-mdb] 56/93: no bugs with uint8_t, but display is divided in 4 pieces, gnunet, 2019/11/18
- [taler-taler-mdb] 61/93: qr gen, gnunet, 2019/11/18
- [taler-taler-mdb] 59/93: when no display, show on stdout, gnunet, 2019/11/18
- [taler-taler-mdb] 54/93: first (half working) qrcode, gnunet, 2019/11/18
- [taler-taler-mdb] 52/93: stop NFC interaction after payment succeeded, gnunet, 2019/11/18
- [taler-taler-mdb] 58/93: fix, gnunet, 2019/11/18
- [taler-taler-mdb] 65/93: qr gen, gnunet, 2019/11/18
- [taler-taler-mdb] 57/93: stick to convention, gnunet, 2019/11/18
- [taler-taler-mdb] 49/93: intermediary commit,
gnunet <=
- [taler-taler-mdb] 62/93: qr gen, gnunet, 2019/11/18
- [taler-taler-mdb] 47/93: Merge branch 'refactor' of https://git.taler.net/taler-mdb into refactor, gnunet, 2019/11/18
- [taler-taler-mdb] 50/93: slight logic clean up, gnunet, 2019/11/18
- [taler-taler-mdb] 51/93: fix json construction, gnunet, 2019/11/18
- [taler-taler-mdb] 63/93: qr gen, gnunet, 2019/11/18
- [taler-taler-mdb] 66/93: swap xy, gnunet, 2019/11/18
- [taler-taler-mdb] 68/93: see stuff, gnunet, 2019/11/18
- [taler-taler-mdb] 82/93: see stuff, gnunet, 2019/11/18
- [taler-taler-mdb] 72/93: see stuff, gnunet, 2019/11/18
- [taler-taler-mdb] 67/93: swap xy, gnunet, 2019/11/18