gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] [taler-merchant] 01/02: towards using new AAI in generate-p


From: gnunet
Subject: [GNUnet-SVN] [taler-merchant] 01/02: towards using new AAI in generate-payments
Date: Wed, 13 Dec 2017 21:52:13 +0100

This is an automated email from the git hooks/post-receive script.

grothoff pushed a commit to branch master
in repository merchant.

commit a6a686875684a6d43a124a51b5b23f7f13284a25
Author: Christian Grothoff <address@hidden>
AuthorDate: Tue Dec 12 15:54:25 2017 +0100

    towards using new AAI in generate-payments
---
 src/merchant-tools/Makefile.am                     |   1 +
 .../taler-merchant-generate-payments.c             | 233 ++++++++++-----------
 2 files changed, 117 insertions(+), 117 deletions(-)

diff --git a/src/merchant-tools/Makefile.am b/src/merchant-tools/Makefile.am
index df271a2..7811d04 100644
--- a/src/merchant-tools/Makefile.am
+++ b/src/merchant-tools/Makefile.am
@@ -33,6 +33,7 @@ taler_merchant_generate_payments_LDADD = \
   $(top_srcdir)/src/backenddb/libtalermerchantdb.la \
   $(top_srcdir)/src/lib/libtalermerchant.la \
   $(LIBGCRYPT_LIBS) \
+  -ltalerbank \
   -ltalerfakebank \
   -ltalerexchange \
   -ltalerjson \
diff --git a/src/merchant-tools/taler-merchant-generate-payments.c 
b/src/merchant-tools/taler-merchant-generate-payments.c
index 3e19943..8b3af97 100644
--- a/src/merchant-tools/taler-merchant-generate-payments.c
+++ b/src/merchant-tools/taler-merchant-generate-payments.c
@@ -1,6 +1,6 @@
 /*
   This file is part of TALER
-  Copyright (C) 2014, 2015, 2016 GNUnet e.V. and INRIA
+  Copyright (C) 2014-2017 Taler Systems SA
 
   TALER is free software; you can redistribute it and/or modify it under the
   terms of the GNU Lesser General Public License as published by the Free 
Software
@@ -13,9 +13,18 @@
   You should have received a copy of the GNU Lesser General Public License 
along with
   TALER; see the file COPYING.LGPL.  If not, see <http://www.gnu.org/licenses/>
 */
-
+/**
+ * @file taler-merchant-generate-payments.c
+ * @brief tool to use (or test) the taler backend by running some transactions
+ * @author Christian Grothoff
+ * @author Marcello Stanisci
+ *
+ * TODO:
+ * - trigger wirewatch after /admin/add/incoming!
+ */ 
 #include "platform.h"
 #include <taler/taler_exchange_service.h>
+#include <taler/taler_bank_service.h>
 #include <taler/taler_fakebank_lib.h>
 #include <taler/taler_json_lib.h>
 #include <taler/taler_util.h>
@@ -27,6 +36,11 @@
 #include <microhttpd.h>
 
 /**
+ * Number of the account the exchange has at the bank.
+ */
+#define EXCHANGE_ACCOUNT_NO 2
+
+/**
  * The exchange process launched by the generator
  */
 static struct GNUNET_OS_Process *exchanged;
@@ -60,25 +74,25 @@ static int remote_exchange = 0;
 static int remote_merchant = 0;
 
 /**
- * Exchange URI to withdraw from and deposit to.
+ * Exchange URL to withdraw from and deposit to.
  */
-static char *exchange_uri;
+static char *exchange_url;
 
 /**
  * Base URL of exchange's admin interface.
  */
-static char *exchange_uri_admin;
+static char *exchange_url_admin;
 
 /**
  * Merchant backend to get proposals from and pay.
  */
-static char *merchant_uri;
+static char *merchant_url;
 
 /**
- * Customer's bank URI, communicated at withdrawal time
+ * Customer's bank URL, communicated at withdrawal time
  * to the exchange; must be the same as the exchange's bank.
  */
-static char *bank_uri;
+static char *bank_url;
 
 /**
  * Which merchant instance we use.
@@ -281,14 +295,14 @@ struct Command
       char *amount;
 
       /**
-       * Sender's bank account details (JSON).
+       * Sender's bank account number.
        */
-      const char *sender_details;
+      uint64_t debit_account_no;
 
       /**
-       * Transfer details (JSON)
+       * Receiver's bank account number.
        */
-       const char *transfer_details;
+      uint64_t credit_account_no;
 
       /**
        * Set (by the interpreter) to the reserve's private key
@@ -299,8 +313,13 @@ struct Command
       /**
        * Set to the API's handle during the operation.
        */
-      struct TALER_EXCHANGE_AdminAddIncomingHandle *aih;
+      struct TALER_BANK_AdminAddIncomingHandle *aih;
 
+      /**
+       * Set to bank's identifier for the wire transfer.
+       */
+      uint64_t serial_id;
+      
     } admin_add_incoming;
 
     /**
@@ -593,24 +612,28 @@ pay_cb (void *cls,
  * @param http_status HTTP response code, #MHD_HTTP_OK (200) for successful 
status request
  *                    0 if the exchange's reply is bogus (fails to follow the 
protocol)
  * @param ec taler-specific error code, #TALER_EC_NONE on success
+ * @param serial_id unique ID of for the transfer at the bank
  * @param full_response full response from the exchange (for logging, in case 
of errors)
  */
 static void
 add_incoming_cb (void *cls,
                  unsigned int http_status,
                 enum TALER_ErrorCode ec,
+                uint64_t serial_id,
                  const json_t *full_response)
 {
   struct InterpreterState *is = cls;
   struct Command *cmd = &is->commands[is->ip];
 
   cmd->details.admin_add_incoming.aih = NULL;
+  cmd->details.admin_add_incoming.serial_id = serial_id;
   if (MHD_HTTP_OK != http_status)
   {
     GNUNET_break (0);
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
                 "%s",
-                json_dumps (full_response, JSON_INDENT (2)));
+                json_dumps (full_response,
+                           JSON_INDENT (2)));
     fail (is);
     return;
   }
@@ -823,7 +846,7 @@ make_order (const char *maxfee,
 
 
 /**
- * Free amount stringsin interpreter state.
+ * Free amount strings in interpreter state.
  *
  * @param is state to reset
  */
@@ -933,7 +956,7 @@ reset_interpreter (struct InterpreterState *is)
                     "Command %u (%s) did not complete\n",
                     i,
                     cmd->label);
-        TALER_EXCHANGE_admin_add_incoming_cancel 
(cmd->details.admin_add_incoming.aih);
+        TALER_BANK_admin_add_incoming_cancel 
(cmd->details.admin_add_incoming.aih);
         cmd->details.admin_add_incoming.aih = NULL;
       }
       break;
@@ -960,11 +983,7 @@ interpreter_run (void *cls)
   struct InterpreterState *is = cls;
   struct Command *cmd = &is->commands[is->ip];
   const struct Command *ref;
-  struct TALER_ReservePublicKeyP reserve_pub;
   struct TALER_Amount amount;
-  struct GNUNET_TIME_Absolute execution_date;
-  json_t *sender_details;
-  json_t *transfer_details;
 
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
              "Interpreter runs command %u/%s(%u)\n",
@@ -1101,7 +1120,7 @@ interpreter_run (void *cls)
         }
         cmd->details.pay.ph
           = TALER_MERCHANT_pay_wallet (ctx,
-                                       merchant_uri,
+                                       merchant_url,
                                        instance,
                                        &ref->details.proposal.hash,
                                        &total_amount,
@@ -1112,7 +1131,7 @@ interpreter_run (void *cls)
                                        refund_deadline,
                                        pay_deadline,
                                        &h_wire,
-                                       exchange_uri,
+                                       exchange_url,
                                        order_id,
                                        1 /* num_coins */,
                                        &pc /* coins */,
@@ -1155,7 +1174,7 @@ interpreter_run (void *cls)
         json_decref (merchant_obj);
         cmd->details.proposal.po
           = TALER_MERCHANT_order_put (ctx,
-                                      merchant_uri,
+                                      merchant_url,
                                       order,
                                       &proposal_cb,
                                       is);
@@ -1170,89 +1189,69 @@ interpreter_run (void *cls)
       }
 
     case OC_ADMIN_ADD_INCOMING:
-      if (NULL !=
-          cmd->details.admin_add_incoming.reserve_reference)
       {
-        ref = find_command (is,
-                            cmd->details.admin_add_incoming.reserve_reference);
-        GNUNET_assert (NULL != ref);
-        GNUNET_assert (OC_ADMIN_ADD_INCOMING == ref->oc);
-        cmd->details.admin_add_incoming.reserve_priv
-          = ref->details.admin_add_incoming.reserve_priv;
+       char *subject;
+       struct TALER_BANK_AuthenticationData auth;
+       struct TALER_ReservePublicKeyP reserve_pub;
+         
+       if (NULL !=
+           cmd->details.admin_add_incoming.reserve_reference)
+       {
+         ref = find_command (is,
+                             
cmd->details.admin_add_incoming.reserve_reference);
+         GNUNET_assert (NULL != ref);
+         GNUNET_assert (OC_ADMIN_ADD_INCOMING == ref->oc);
+         cmd->details.admin_add_incoming.reserve_priv
+           = ref->details.admin_add_incoming.reserve_priv;
+       }
+       else
+       {
+         struct GNUNET_CRYPTO_EddsaPrivateKey *priv;
+         
+         priv = GNUNET_CRYPTO_eddsa_key_create ();
+         cmd->details.admin_add_incoming.reserve_priv.eddsa_priv = *priv;
+         GNUNET_free (priv);
+       }
+       GNUNET_CRYPTO_eddsa_key_get_public 
(&cmd->details.admin_add_incoming.reserve_priv.eddsa_priv,
+                                           &reserve_pub.eddsa_pub);
+       if (GNUNET_OK !=
+           TALER_string_to_amount (cmd->details.admin_add_incoming.amount,
+                                   &amount))
+       {
+         GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+                     "Failed to parse amount `%s' at %u\n",
+                     cmd->details.admin_add_incoming.amount,
+                     is->ip);
+         fail (is);
+         return;
+       }
+
+       subject
+         = GNUNET_STRINGS_data_to_string_alloc (&reserve_pub,
+                                                sizeof (reserve_pub));
+       auth.method = TALER_BANK_AUTH_BASIC;
+       auth.details.basic.username = "admin";
+       auth.details.basic.password = "x";
+       cmd->details.admin_add_incoming.aih
+         = TALER_BANK_admin_add_incoming (ctx,
+                                          bank_url,
+                                          &auth,
+                                          exchange_url,
+                                          subject,
+                                          &amount,
+                                          
cmd->details.admin_add_incoming.debit_account_no,
+                                          
cmd->details.admin_add_incoming.credit_account_no,
+                                          &add_incoming_cb,
+                                          is);
+       GNUNET_free (subject);
+       if (NULL == cmd->details.admin_add_incoming.aih)
+       {
+         GNUNET_break (0);
+         fail (is);
+         return;
+       }
+       return;
       }
-      else
-      {
-        struct GNUNET_CRYPTO_EddsaPrivateKey *priv;
-
-        priv = GNUNET_CRYPTO_eddsa_key_create ();
-        cmd->details.admin_add_incoming.reserve_priv.eddsa_priv = *priv;
-        GNUNET_free (priv);
-      }
-      GNUNET_CRYPTO_eddsa_key_get_public 
(&cmd->details.admin_add_incoming.reserve_priv.eddsa_priv,
-                                          &reserve_pub.eddsa_pub);
-      if (GNUNET_OK !=
-          TALER_string_to_amount (cmd->details.admin_add_incoming.amount,
-                                  &amount))
-      {
-        GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                    "Failed to parse amount `%s' at %u\n",
-                    cmd->details.admin_add_incoming.amount,
-                    is->ip);
-        fail (is);
-        return;
-      }
-
-      execution_date = GNUNET_TIME_absolute_get ();
-      GNUNET_TIME_round_abs (&execution_date);
-      sender_details = json_loads 
(cmd->details.admin_add_incoming.sender_details,
-                                   JSON_REJECT_DUPLICATES,
-                                   NULL);
-      if (NULL == sender_details)
-      {
-        GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                    "Failed to parse sender details `%s' at %u\n",
-                    cmd->details.admin_add_incoming.sender_details,
-                    is->ip);
-        fail (is);
-        return;
-      }
-      json_object_set_new (sender_details,
-                           "bank_uri",
-                           json_string (bank_uri));
-
-      transfer_details = json_loads 
(cmd->details.admin_add_incoming.transfer_details,
-                                     JSON_REJECT_DUPLICATES,
-                                     NULL);
-
-      if (NULL == transfer_details)
-      {
-        GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                    "Failed to parse transfer details `%s' at %u\n",
-                    cmd->details.admin_add_incoming.transfer_details,
-                    is->ip);
-        fail (is);
-        return;
-      }
-      cmd->details.admin_add_incoming.aih
-        = TALER_EXCHANGE_admin_add_incoming (exchange,
-                                             exchange_uri_admin,
-                                             &reserve_pub,
-                                             &amount,
-                                             execution_date,
-                                             sender_details,
-                                             transfer_details,
-                                             &add_incoming_cb,
-                                             is);
-      json_decref (sender_details);
-      json_decref (transfer_details);
-      if (NULL == cmd->details.admin_add_incoming.aih)
-      {
-        GNUNET_break (0);
-        fail (is);
-        return;
-      }
-      return;
-
     case OC_WITHDRAW_SIGN:
       GNUNET_assert (NULL !=
                      cmd->details.reserve_withdraw.reserve_reference);
@@ -1445,23 +1444,23 @@ run_test ()
     { .oc = OC_ADMIN_ADD_INCOMING,
       .label = "create-reserve-1",
       .expected_response_code = MHD_HTTP_OK,
-      .details.admin_add_incoming.sender_details = "{ \"type\":\"test\", 
\"account_number\":62, \"uuid\":1 }",
-      .details.admin_add_incoming.transfer_details = "{ \"uuid\": 1}",
+      .details.admin_add_incoming.debit_account_no = 62,
+      .details.admin_add_incoming.credit_account_no = EXCHANGE_ACCOUNT_NO,
       .details.admin_add_incoming.amount = concat_amount (currency, "5.01") },
 
     /* Fill reserve with EUR:5.01, as withdraw fee is 1 ct per config */
     { .oc = OC_ADMIN_ADD_INCOMING,
       .label = "create-reserve-2",
       .expected_response_code = MHD_HTTP_OK,
-      .details.admin_add_incoming.sender_details = "{ \"type\":\"test\", 
\"account_number\":62, \"uuid\":1 }",
-      .details.admin_add_incoming.transfer_details = "{ \"uuid\": 1}",
+      .details.admin_add_incoming.debit_account_no = 62,
+      .details.admin_add_incoming.credit_account_no = EXCHANGE_ACCOUNT_NO,
       .details.admin_add_incoming.amount = concat_amount (currency, "5.01") },
     /* Fill reserve with EUR:5.01, as withdraw fee is 1 ct per config */
     { .oc = OC_ADMIN_ADD_INCOMING,
       .label = "create-reserve-3",
       .expected_response_code = MHD_HTTP_OK,
-      .details.admin_add_incoming.sender_details = "{ \"type\":\"test\", 
\"account_number\":62, \"uuid\":1 }",
-      .details.admin_add_incoming.transfer_details = "{ \"uuid\": 1}",
+      .details.admin_add_incoming.debit_account_no = 62,
+      .details.admin_add_incoming.credit_account_no = EXCHANGE_ACCOUNT_NO,
       .details.admin_add_incoming.amount = concat_amount (currency, "5.01") },
 
     /* Withdraw a 5 EUR coin, at fee of 1 ct */
@@ -1544,7 +1543,7 @@ run_test ()
   GNUNET_assert (NULL != ctx);
   rc = GNUNET_CURL_gnunet_rc_create (ctx);
   exchange = TALER_EXCHANGE_connect (ctx,
-                                     exchange_uri,
+                                     exchange_url,
                                      &cert_cb,
                                      is,
                                      TALER_EXCHANGE_OPTION_END);
@@ -1575,7 +1574,7 @@ run (void *cls,
   if (GNUNET_SYSERR == GNUNET_CONFIGURATION_get_value_string (config,
                                                               
"payments-generator",
                                                               "exchange",
-                                                              &exchange_uri))
+                                                              &exchange_url))
   {
     GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR,
                                "payments-generator",
@@ -1586,7 +1585,7 @@ run (void *cls,
   if (GNUNET_SYSERR == GNUNET_CONFIGURATION_get_value_string (config,
                                                               
"payments-generator",
                                                               "exchange_admin",
-                                                              
&exchange_uri_admin))
+                                                              
&exchange_url_admin))
   {
     GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR,
                                "payments-generator",
@@ -1598,7 +1597,7 @@ run (void *cls,
   if (GNUNET_SYSERR == GNUNET_CONFIGURATION_get_value_string (config,
                                                               
"payments-generator",
                                                               "merchant",
-                                                              &merchant_uri))
+                                                              &merchant_url))
   {
     GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR,
                                "payments-generator",
@@ -1610,7 +1609,7 @@ run (void *cls,
   if (GNUNET_SYSERR == GNUNET_CONFIGURATION_get_value_string (config,
                                                               
"payments-generator",
                                                               "bank",
-                                                              &bank_uri))
+                                                              &bank_url))
   {
 
     GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR,
@@ -1665,7 +1664,7 @@ run (void *cls,
              "Waiting for taler-exchange-httpd to be ready\n");
     cnt = 0;
 
-    GNUNET_asprintf (&wget_cmd, "wget -q -t 1 -T 1 %skeys -o /dev/null -O 
/dev/null", exchange_uri);
+    GNUNET_asprintf (&wget_cmd, "wget -q -t 1 -T 1 %skeys -o /dev/null -O 
/dev/null", exchange_url);
 
     do
       {
@@ -1715,7 +1714,7 @@ run (void *cls,
     fprintf (stderr,
              "Waiting for taler-merchant-httpd to be ready\n");
     cnt = 0;
-    GNUNET_asprintf (&wget_cmd, "wget -q -t 1 -T 1 %s -o /dev/null -O 
/dev/null", merchant_uri);
+    GNUNET_asprintf (&wget_cmd, "wget -q -t 1 -T 1 %s -o /dev/null -O 
/dev/null", merchant_url);
 
     do
       {

-- 
To stop receiving notification emails like this one, please contact
address@hidden



reply via email to

[Prev in Thread] Current Thread [Next in Thread]