change internal format of requests

This commit is contained in:
ThomasV 2015-07-21 12:26:37 +02:00
parent 2c1fb1e37c
commit a6c65b8997
4 changed files with 25 additions and 24 deletions

View File

@ -681,7 +681,7 @@ class ElectrumWindow(QMainWindow):
return return
addr = str(item.text(2)) addr = str(item.text(2))
req = self.wallet.receive_requests[addr] req = self.wallet.receive_requests[addr]
expires = _('Never') if req.get('expiration') is None else util.age(req['timestamp'] + req['expiration']) expires = _('Never') if req.get('exp') is None else util.age(req['time'] + req['exp'])
amount = req['amount'] amount = req['amount']
message = self.wallet.labels.get(addr, '') message = self.wallet.labels.get(addr, '')
self.receive_address_e.setText(addr) self.receive_address_e.setText(addr)
@ -703,14 +703,14 @@ class ElectrumWindow(QMainWindow):
message = self.wallet.labels.get(addr, '') message = self.wallet.labels.get(addr, '')
amount = req['amount'] amount = req['amount']
URI = util.create_URI(addr, amount, message) URI = util.create_URI(addr, amount, message)
if req.get('id') and req.get('sig'): if req.get('time'):
URI += "&time=%d"%req.get('time')
if req.get('exp'):
URI += "&exp=%d"%req.get('exp')
if req.get('name') and req.get('sig'):
sig = req.get('sig').decode('hex') sig = req.get('sig').decode('hex')
sig = bitcoin.base_encode(sig, base=58) sig = bitcoin.base_encode(sig, base=58)
URI += "&id=" + req['id'] + "&sig="+sig URI += "&name=" + req['name'] + "&sig="+sig
if req.get('timestamp'):
URI += "&timestamp=%d"%req.get('timestamp')
if req.get('expiration'):
URI += "&expiration=%d"%req.get('expiration')
return str(URI) return str(URI)
def receive_list_menu(self, position): def receive_list_menu(self, position):
@ -748,7 +748,7 @@ class ElectrumWindow(QMainWindow):
return return
pr, requestor = paymentrequest.make_request(self.config, req, alias, alias_privkey) pr, requestor = paymentrequest.make_request(self.config, req, alias, alias_privkey)
if requestor: if requestor:
req['id'] = requestor req['name'] = requestor
req['sig'] = pr.signature.encode('hex') req['sig'] = pr.signature.encode('hex')
self.wallet.add_payment_request(req, self.config) self.wallet.add_payment_request(req, self.config)
@ -870,14 +870,14 @@ class ElectrumWindow(QMainWindow):
address = req['address'] address = req['address']
if address not in domain: if address not in domain:
continue continue
timestamp = req['timestamp'] timestamp = req.get('time', 0)
amount = req.get('amount') amount = req.get('amount')
expiration = req.get('expiration', None) expiration = req.get('exp', None)
message = req.get('memo', '') message = req.get('memo', '')
date = format_time(timestamp) date = format_time(timestamp)
status = req.get('status') status = req.get('status')
signature = req.get('sig') signature = req.get('sig')
requestor = req.get('id', '') requestor = req.get('name', '')
amount_str = self.format_amount(amount) if amount else "" amount_str = self.format_amount(amount) if amount else ""
account = '' account = ''
item = QTreeWidgetItem([date, account, address, '', message, amount_str, pr_tooltips.get(status,'')]) item = QTreeWidgetItem([date, account, address, '', message, amount_str, pr_tooltips.get(status,'')])
@ -1348,10 +1348,10 @@ class ElectrumWindow(QMainWindow):
r = out.get('r') r = out.get('r')
sig = out.get('sig') sig = out.get('sig')
_id = out.get('id') name = out.get('name')
if r or (_id and sig): if r or (name and sig):
def get_payment_request_thread(): def get_payment_request_thread():
if _id and sig: if name and sig:
from electrum import paymentrequest from electrum import paymentrequest
pr = paymentrequest.serialize_request(out).SerializeToString() pr = paymentrequest.serialize_request(out).SerializeToString()
self.payment_request = paymentrequest.PaymentRequest(pr) self.payment_request = paymentrequest.PaymentRequest(pr)

View File

@ -290,11 +290,11 @@ class PaymentRequest:
def make_unsigned_request(req): def make_unsigned_request(req):
from transaction import Transaction from transaction import Transaction
addr = req['address'] addr = req['address']
time = req['timestamp'] time = req['time']
amount = req['amount'] amount = req['amount']
if amount is None: if amount is None:
amount = 0 amount = 0
expires = req['expiration'] expires = req['exp']
memo = req['memo'] memo = req['memo']
script = Transaction.pay_script('address', addr).decode('hex') script = Transaction.pay_script('address', addr).decode('hex')
outputs = [(script, amount)] outputs = [(script, amount)]
@ -340,7 +340,7 @@ def sign_request_with_x509(pr, key_path, cert_path):
def serialize_request(req): def serialize_request(req):
pr = make_unsigned_request(req) pr = make_unsigned_request(req)
signature = req.get('sig') signature = req.get('sig')
requestor = req.get('id') requestor = req.get('name')
if requestor and signature: if requestor and signature:
pr.signature = signature.decode('hex') pr.signature = signature.decode('hex')
pr.pki_type = 'dnssec+btc' pr.pki_type = 'dnssec+btc'

View File

@ -278,9 +278,10 @@ def parse_URI(uri):
if 'message' in out: if 'message' in out:
out['message'] = out['message'].decode('utf8') out['message'] = out['message'].decode('utf8')
out['memo'] = out['message'] out['memo'] = out['message']
if 'timestamp' in out: if 'time' in out:
out['timestamp'] = int(out['timestamp']) out['time'] = int(out['time'])
out['expiration'] = int(out['expiration']) if 'exp' in out:
out['exp'] = int(out['exp'])
if 'sig' in out: if 'sig' in out:
out['sig'] = bitcoin.base_decode(out['sig'], None, base=58).encode('hex') out['sig'] = bitcoin.base_decode(out['sig'], None, base=58).encode('hex')

View File

@ -1242,8 +1242,8 @@ class Abstract_Wallet(object):
r = self.receive_requests[key] r = self.receive_requests[key]
address = r['address'] address = r['address']
amount = r.get('amount') amount = r.get('amount')
timestamp = r.get('timestamp', 0) timestamp = r.get('time', 0)
expiration = r.get('expiration') expiration = r.get('exp')
if amount: if amount:
if self.up_to_date: if self.up_to_date:
paid = amount <= self.get_addr_received(address) paid = amount <= self.get_addr_received(address)
@ -1259,7 +1259,7 @@ class Abstract_Wallet(object):
def make_payment_request(self, addr, amount, message, expiration): def make_payment_request(self, addr, amount, message, expiration):
timestamp = int(time.time()) timestamp = int(time.time())
_id = Hash(addr + "%d"%timestamp).encode('hex')[0:10] _id = Hash(addr + "%d"%timestamp).encode('hex')[0:10]
r = {'timestamp':timestamp, 'amount':amount, 'expiration':expiration, 'address':addr, 'memo':message, 'id':_id} r = {'time':timestamp, 'amount':amount, 'exp':expiration, 'address':addr, 'memo':message, 'id':_id}
return r return r
def add_payment_request(self, req, config): def add_payment_request(self, req, config):
@ -1305,7 +1305,7 @@ class Abstract_Wallet(object):
return True return True
def get_sorted_requests(self, config): def get_sorted_requests(self, config):
return sorted(map(lambda x: self.get_payment_request(x, config), self.receive_requests.keys()), key=itemgetter('timestamp')) return sorted(map(lambda x: self.get_payment_request(x, config), self.receive_requests.keys()), key=lambda x: x.get('time', 0))