summaryrefslogtreecommitdiff
path: root/talerbank/app/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'talerbank/app/views.py')
-rw-r--r--talerbank/app/views.py24
1 files changed, 13 insertions, 11 deletions
diff --git a/talerbank/app/views.py b/talerbank/app/views.py
index fc1eb54..1ac0c99 100644
--- a/talerbank/app/views.py
+++ b/talerbank/app/views.py
@@ -102,17 +102,19 @@ def allow_origin_star(view_func):
class PaytoParse:
def __init__(self, payto_uri):
- parsed_payto = urlparse(payto_uri)
- if parsed_payto.scheme != "payto":
- raise Exception("Bad Payto URI: '%s'" % payto_uri)
- path_as_list = parsed_payto.path.split("/")
- if len(path_as_list) == 0:
- raise Exception("No account/user name found: '%s'" % payto_uri)
- self.account = path_as_list[-1]
- params = dict(parse_qsl(parsed_payto.query))
- self.subject = params.get("subject")
- self.amount = Amount.parse(params.get("amount"))
-
+ obj = urlparse(payto_uri)
+ path = obj.path.split("/")
+ if obj.scheme != "payto" or \
+ len(path) != 3 or \
+ not obj.netloc or \
+ not re.match("^payto://", payto_uri):
+ raise Exception(f"Bad Payto URI: {payto_uri}")
+ self.target = path.pop()
+ self.bank = path.pop()
+ self.authority = obj.netloc
+ params = dict(parse_qsl(obj.query))
+ self.message = params.get("message")
+ self.amount = Amount.parse(params.get("amount")) if "amount" in params else None
##
# Exception raised upon failing login.