gnunet-svn
[Top][All Lists]
Advanced

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

[taler-sync] 01/03: propper handling of URIs


From: gnunet
Subject: [taler-sync] 01/03: propper handling of URIs
Date: Sat, 30 Nov 2019 00:11:13 +0100

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

grothoff pushed a commit to branch master
in repository sync.

commit 03d8657d530be561b321fd93d586f188cb61384b
Author: Christian Grothoff <address@hidden>
AuthorDate: Fri Nov 29 23:57:51 2019 +0100

    propper handling of URIs
---
 src/lib/sync_api_upload.c               | 10 +++++++++
 src/lib/test_sync_api.c                 | 13 ++++++++++++
 src/lib/test_sync_api.conf              |  6 ++++++
 src/lib/testing_api_cmd_backup_upload.c | 37 ++++++++++++++++++++++++++++++++-
 src/sync/sync-httpd_backup_post.c       |  6 ++----
 5 files changed, 67 insertions(+), 5 deletions(-)

diff --git a/src/lib/sync_api_upload.c b/src/lib/sync_api_upload.c
index 33ff381..31a7d08 100644
--- a/src/lib/sync_api_upload.c
+++ b/src/lib/sync_api_upload.c
@@ -219,8 +219,18 @@ handle_header (char *buffer,
   if (0 == strcasecmp (hdr_type,
                        "Taler"))
   {
+    size_t len;
+
     /* found payment URI we care about! */
     uo->pay_uri = GNUNET_strdup (hdr_val);
+    len = strlen (uo->pay_uri);
+    while ( (len > 0) &&
+            ( ('\n' == uo->pay_uri[len - 1]) ||
+              ('\r' == uo->pay_uri[len - 1]) ) )
+    {
+      len--;
+      uo->pay_uri[len] = '\0';
+    }
   }
   GNUNET_free (ndup);
   return total;
diff --git a/src/lib/test_sync_api.c b/src/lib/test_sync_api.c
index 6f6ac77..fbbe0b1 100644
--- a/src/lib/test_sync_api.c
+++ b/src/lib/test_sync_api.c
@@ -249,6 +249,19 @@ run (void *cls,
                                     MHD_HTTP_PAYMENT_REQUIRED,
                                     "Test-1",
                                     strlen ("Test-1")),
+    TALER_TESTING_cmd_proposal_lookup ("fetch-proposal",
+                                       merchant_url,
+                                       MHD_HTTP_OK,
+                                       "backup-upload-1",
+                                       NULL),
+    TALER_TESTING_cmd_pay ("pay-account",
+                           merchant_url,
+                           MHD_HTTP_OK,
+                           "fetch-proposal",
+                           "withdraw-coin-1",
+                           "EUR:5",
+                           "EUR:4.99", /* must match ANNUAL_FEE in config! */
+                           "EUR:0.01"),
     TALER_TESTING_cmd_end ()
   };
 
diff --git a/src/lib/test_sync_api.conf b/src/lib/test_sync_api.conf
index c767b72..eb9d7ca 100644
--- a/src/lib/test_sync_api.conf
+++ b/src/lib/test_sync_api.conf
@@ -18,6 +18,12 @@ PORT = 8084
 # Where does our payment backend run?  Must match PORT under [merchant]
 PAYMENT_BACKEND_URL = http://localhost:8080/
 
+# Annual fee we charge.
+ANNUAL_FEE = EUR:4.99
+
+# Upload limit
+UPLOAD_LIMIT_MB = 1
+
 [syncdb-postgres]
 CONFIG = postgres:///synccheck
 
diff --git a/src/lib/testing_api_cmd_backup_upload.c 
b/src/lib/testing_api_cmd_backup_upload.c
index 02d66fb..6ed228a 100644
--- a/src/lib/testing_api_cmd_backup_upload.c
+++ b/src/lib/testing_api_cmd_backup_upload.c
@@ -151,7 +151,42 @@ backup_upload_cb (void *cls,
       }
       break;
     case SYNC_US_PAYMENT_REQUIRED:
-      bus->payment_order_id = GNUNET_strdup (ud->details.payment_request);
+      {
+        const char *m;
+
+        if (0 != strncmp (ud->details.payment_request,
+                          "taler://pay/http",
+                          strlen ("taler://pay/http")))
+        {
+          GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+                      "Did not find `%s' in `%s'\n",
+                      "/-/-/",
+                      ud->details.payment_request);
+          TALER_TESTING_interpreter_fail (bus->is);
+          return;
+        }
+        m = strstr (ud->details.payment_request, "/-/-/");
+        if (NULL == m)
+        {
+          GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+                      "Did not find `%s' in `%s'\n",
+                      "/-/-/",
+                      ud->details.payment_request);
+          TALER_TESTING_interpreter_fail (bus->is);
+          /* NOTE: The above is a simplifying assumption for the
+             test-logic, hitting this code merely means that
+             the assumptions for the test (i.e. no instance) are
+             not satisfied, it is not inherently the case that
+             the above token must appear in the payment request!
+
+             So if you hit this, you might just want to modify
+             the code here to handle this better! */return;
+        }
+        bus->payment_order_id = GNUNET_strdup (&m[strlen ("/-/-/")]);
+        GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+                    "Order ID from Sync service is `%s'\n",
+                    bus->payment_order_id);
+      }
       break;
     case SYNC_US_CONFLICTING_BACKUP:
       {
diff --git a/src/sync/sync-httpd_backup_post.c 
b/src/sync/sync-httpd_backup_post.c
index 8137910..6562b0e 100644
--- a/src/sync/sync-httpd_backup_post.c
+++ b/src/sync/sync-httpd_backup_post.c
@@ -290,12 +290,11 @@ proposal_cb (void *cls,
                                          "backend-http-status",
                                          (json_int_t) http_status);
     GNUNET_assert (NULL != bc->resp);
-    fprintf (stderr, "SET: %p - %p\n", bc, (NULL != bc) ? bc->resp : NULL);
     bc->response_code = MHD_HTTP_INTERNAL_SERVER_ERROR;
     return;
   }
-  GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-              "Storing payment request for order %s\n",
+  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+              "Storing payment request for order `%s'\n",
               order_id);
   qs = db->store_payment_TR (db->cls,
                              &bc->account,
@@ -609,7 +608,6 @@ sync_handler_backup_post (struct MHD_Connection *connection,
   struct BackupContext *bc;
 
   bc = *con_cls;
-  fprintf (stderr, "%p - %p\n", bc, (NULL != bc) ? bc->resp : NULL);
   if (NULL == bc)
   {
     /* first call, setup internals */

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



reply via email to

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