From e61f7dc4576af119582b1035db43243dd52ca8b4 Mon Sep 17 00:00:00 2001 From: Marcello Stanisci Date: Fri, 29 Nov 2019 16:16:33 +0100 Subject: body decoder helper function --- talerbank/app/middleware.py | 1 - talerbank/app/schemas.py | 1 - talerbank/app/views.py | 24 ++++++++++++++---------- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/talerbank/app/middleware.py b/talerbank/app/middleware.py index 980b87b..08c85aa 100644 --- a/talerbank/app/middleware.py +++ b/talerbank/app/middleware.py @@ -54,7 +54,6 @@ class DecompressionMiddleware: return self.get_response(request) - ## # Class holding data needed by the handling logic. class ExceptionMiddleware: diff --git a/talerbank/app/schemas.py b/talerbank/app/schemas.py index b4c64ce..c3524fa 100644 --- a/talerbank/app/schemas.py +++ b/talerbank/app/schemas.py @@ -101,7 +101,6 @@ class AuthForm(forms.Form): ] ) - # Just any value is good here. data = forms.Field(required=False) diff --git a/talerbank/app/views.py b/talerbank/app/views.py index 763a0e9..9186837 100644 --- a/talerbank/app/views.py +++ b/talerbank/app/views.py @@ -143,6 +143,14 @@ def ignore(request): return HttpResponse() +## +# Decode body, when it is expected to be UTF-8. +# +# @param request the HTTP request being served. +# @return the body as string. +def decode_body(request): + return request.body.decode("utf-8") + ## # Get a flag from the session and clear it. # @@ -814,9 +822,8 @@ def auth_and_login(request): @require_http_methods(["PUT", "POST"]) @login_via_headers def reject(request, user_account): - data = json.loads(request.body.decode("utf-8")) - data = RejectData(data) + data = RejectData(json.loads(decode_body(request))) if not data.is_valid(): raise JSONFieldException(data.errors, 400) @@ -869,9 +876,8 @@ def reject(request, user_account): @require_POST @login_via_headers def add_incoming(request, user_account): - data = json.loads(request.body.decode("utf-8")) - data = AddIncomingData(data) + data = AddIncomingData(json.loads(decode_body(request))) if not data.is_valid(): raise JSONFieldException(data.errors, 400) @@ -899,8 +905,7 @@ def add_incoming(request, user_account): @csrf_exempt @require_POST def withdraw_headless_uri(request, user): - data_json = json.loads(request.body.decode("utf-8")) - data = WithdrawHeadlessUri(data_json) + data = WithdrawHeadlessUri(json.loads(decode_body(request))) if not data.is_valid(): raise JSONFieldException(data.errors, 400) amount = Amount.parse(data.cleaned_data["amount"]) @@ -922,9 +927,8 @@ def withdraw_headless_uri(request, user): @csrf_exempt @require_POST def withdraw_headless(request, user): - data = json.loads(request.body.decode("utf-8")) - data = WithdrawHeadless(data) - + + data = WithdrawHeadless(json.loads(decode_body(request))) sender_payto = "payto://x-taler-bank/%s/%d" % \ (request.get_host(), user.bankaccount.account_no) ret_obj = ({"sender_wire_details": sender_payto}) @@ -967,7 +971,7 @@ def api_withdraw_operation(request, withdraw_id): host = request.get_host() if request.method == "POST": - data = json.loads(request.body.decode("utf-8")) + data = json.loads(decode_body(request)) exchange_payto_uri = data.get("selected_exchange") try: account_no = get_acct_from_payto(exchange_payto_uri) -- cgit v1.2.3