gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] [taler-donations] branch master updated: support new instan


From: gnunet
Subject: [GNUnet-SVN] [taler-donations] branch master updated: support new instance API, fix check_status bug
Date: Wed, 09 Oct 2019 10:34:33 +0200

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

dold pushed a commit to branch master
in repository donations.

The following commit(s) were added to refs/heads/master by this push:
     new 277fe2d  support new instance API, fix check_status bug
277fe2d is described below

commit 277fe2de4742654322ae891cef0ac81c31f379b9
Author: Florian Dold <address@hidden>
AuthorDate: Wed Oct 9 14:04:28 2019 +0530

    support new instance API, fix check_status bug
---
 talerdonations/donations/donations.py | 33 ++++++++++++++++-----------------
 1 file changed, 16 insertions(+), 17 deletions(-)

diff --git a/talerdonations/donations/donations.py 
b/talerdonations/donations/donations.py
index 9fd28c1..22511c8 100644
--- a/talerdonations/donations/donations.py
+++ b/talerdonations/donations/donations.py
@@ -41,7 +41,7 @@ app.debug = True
 app.secret_key = base64.b64encode(os.urandom(64)).decode('utf-8')
 
 TC = TalerConfig.from_env()
-BACKEND_URL = TC["frontends"]["backend"].value_string(required=True)
+BACKEND_BASE_URL = TC["frontends"]["backend"].value_string(required=True)
 CURRENCY = TC["taler"]["currency"].value_string(required=True)
 APIKEY = TC["frontends"]["backend_apikey"].value_string(required=True)
 
@@ -78,11 +78,12 @@ def err_abort(abort_status_code, **params):
 # @param params (dict type of) URL parameters to append to the request.
 # @return the JSON response from the backend, or a error response
 #         if something unexpected happens.
-def backend_get(endpoint, params):
+def backend_instanced_get(instance, endpoint, params):
+    backend_url = urljoin(BACKEND_BASE_URL, f"instances/{instance}/")
     headers = {"Authorization": "ApiKey " + APIKEY}
     try:
         resp = requests.get(
-            urljoin(BACKEND_URL, endpoint), params=params, headers=headers
+            urljoin(backend_url, endpoint), params=params, headers=headers
         )
     except requests.ConnectionError:
         err_abort(500, message="Could not establish connection to backend")
@@ -108,14 +109,14 @@ def backend_get(endpoint, params):
 #        this request.
 # @param json the POST's body.
 # @return the backend response (JSON format).
-def backend_post(endpoint, json):
-    headers = {"Authorization": "ApiKey " + APIKEY}
+def backend_instanced_post(instance, endpoint, json):
+    backend_url = urljoin(BACKEND_BASE_URL, f"instances/{instance}/")
     try:
         resp = requests.post(
-            urljoin(BACKEND_URL, endpoint), json=json, headers=headers
+            urljoin(backend_url, endpoint), json=json, headers=headers
         )
     except requests.ConnectionError:
-        err_abort(500, message="Could not establish connection to backend")
+        err_abort(500, message=f"Could not establish connection to backend 
(url={url})")
     try:
         response_json = resp.json()
     except ValueError:
@@ -237,10 +238,9 @@ def donate():
             amount=donation_amount
         ),
         fulfillment_url=fulfillment_url,
-        instance=donation_receiver,
         summary="Donation to {}".format(donation_receiver),
     )
-    order_resp = backend_post("order", dict(order=order))
+    order_resp = backend_instanced_post(donation_receiver, "order", 
dict(order=order))
     order_id = order_resp["order_id"]
     return flask.redirect(
         flask.url_for(
@@ -252,10 +252,10 @@ def donate():
 ##
 # This endpoint is used by the payment request page
 # to check if the payment has been completed via the QR code.
-@app.route("/check-status/<order_id>")
-def check_status(order_id, session_id):
-    pay_params = dict(instance=INSTANCE, order_id=order_id)
-    pay_status = backend_get("check-payment", pay_params)
+@app.route("/check-status/<instance>/<order_id>")
+def check_status(instance, order_id):
+    pay_params = dict(order_id=order_id)
+    pay_status = backend_instanced_get(instance, "check-payment", pay_params)
     return flask.jsonify(paid=pay_status["paid"])
 
 
@@ -276,9 +276,8 @@ def get_qrcode_svg(data):
 @app.route("/donation/<receiver>")
 def fulfillment(receiver):
     order_id = expect_parameter("order_id")
-    pay_params = dict(instance=receiver, order_id=order_id)
-    pay_status = backend_get("check-payment", pay_params)
-
+    pay_params = dict(order_id=order_id)
+    pay_status = backend_instanced_get(receiver, "check-payment", pay_params)
 
     if pay_status.get("paid"):
         extra = pay_status["contract_terms"]["extra"]
@@ -294,7 +293,7 @@ def fulfillment(receiver):
         taler_pay_uri = pay_status["taler_pay_uri"]
         qrcode_svg = get_qrcode_svg(taler_pay_uri)
         check_status_url_enc = urllib.parse.quote(
-            flask.url_for("check_status", order_id=order_id)
+            flask.url_for("check_status", instance=receiver, order_id=order_id)
         )
         content = flask.render_template(
             "templates/request_payment.html",

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



reply via email to

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