X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=lib%2Futil.py;h=e734341387cd0d905e11d25a01d2166e71f75b8d;hb=8ad7a5a08591a7306973660743e481f93cd80145;hp=10faf9d8d4202d5cb43eb025a372d295433fe976;hpb=e8a5070948bd9d0dfea0e1e26489ccec20d80627;p=electrum-nvc.git diff --git a/lib/util.py b/lib/util.py index 10faf9d..e734341 100644 --- a/lib/util.py +++ b/lib/util.py @@ -157,15 +157,21 @@ def age(from_date, since_date = None, target_tz=None, include_seconds=False): #_ud = re.compile('%([0-9a-hA-H]{2})', re.MULTILINE) #urldecode = lambda x: _ud.sub(lambda m: chr(int(m.group(1), 16)), x) -def parse_url(url): +def parse_URI(uri): import urlparse + import urllib + import bitcoin from decimal import Decimal - u = urlparse.urlparse(url) + if ':' not in uri: + assert bitcoin.is_address(uri) + return uri, None, None, None, None + + u = urlparse.urlparse(uri) assert u.scheme == 'bitcoin' address = u.path - #assert bitcoin.is_address(address) + valid_address = bitcoin.is_address(address) pq = urlparse.parse_qs(u.query) @@ -181,15 +187,20 @@ def parse_url(url): k = int(m.group(2)) - 8 amount = Decimal(m.group(1)) * pow( Decimal(10) , k) else: - amount = Decimal(am) + amount = Decimal(am) * 100000000 if 'message' in pq: message = pq['message'][0] if 'label' in pq: label = pq['label'][0] if 'r' in pq: - request_url = pq['r'][0] + request_url = urllib.quote(pq['r'][0], '/:?') - return address, amount, label, message, request_url, url + if request_url != '': + return address, amount, label, message, request_url + + assert valid_address + + return address, amount, label, message, request_url # Python bug (http://bugs.python.org/issue1927) causes raw_input