store invoices as dict. rename domain -> requestor
This commit is contained in:
parent
74b0ed5f48
commit
6cff7a284a
|
@ -1203,7 +1203,7 @@ class ElectrumWindow(QMainWindow):
|
||||||
else:
|
else:
|
||||||
self.payto_e.setExpired()
|
self.payto_e.setExpired()
|
||||||
|
|
||||||
self.payto_e.setText(pr.domain)
|
self.payto_e.setText(pr.get_requestor())
|
||||||
self.amount_e.setText(self.format_amount(pr.get_amount()))
|
self.amount_e.setText(self.format_amount(pr.get_amount()))
|
||||||
self.message_e.setText(pr.get_memo())
|
self.message_e.setText(pr.get_memo())
|
||||||
# signal to set fee
|
# signal to set fee
|
||||||
|
@ -1307,9 +1307,9 @@ class ElectrumWindow(QMainWindow):
|
||||||
for pr in inv_list:
|
for pr in inv_list:
|
||||||
key = pr.get_id()
|
key = pr.get_id()
|
||||||
status = self.invoices.get_status(key)
|
status = self.invoices.get_status(key)
|
||||||
domain = pr.get_domain()
|
requestor = pr.get_requestor()
|
||||||
date_str = format_time(pr.get_expiration_date())
|
date_str = format_time(pr.get_expiration_date())
|
||||||
item = QTreeWidgetItem( [ date_str, domain, pr.memo, self.format_amount(pr.get_amount(), whitespaces=True), pr_tooltips.get(status,'')] )
|
item = QTreeWidgetItem( [ date_str, requestor, pr.memo, self.format_amount(pr.get_amount(), whitespaces=True), pr_tooltips.get(status,'')] )
|
||||||
item.setIcon(4, QIcon(pr_icons.get(status)))
|
item.setIcon(4, QIcon(pr_icons.get(status)))
|
||||||
item.setData(0, Qt.UserRole, key)
|
item.setData(0, Qt.UserRole, key)
|
||||||
item.setFont(1, QFont(MONOSPACE_FONT))
|
item.setFont(1, QFont(MONOSPACE_FONT))
|
||||||
|
@ -1471,7 +1471,7 @@ class ElectrumWindow(QMainWindow):
|
||||||
vbox = QVBoxLayout(d)
|
vbox = QVBoxLayout(d)
|
||||||
grid = QGridLayout()
|
grid = QGridLayout()
|
||||||
grid.addWidget(QLabel(_("Requestor") + ':'), 0, 0)
|
grid.addWidget(QLabel(_("Requestor") + ':'), 0, 0)
|
||||||
grid.addWidget(QLabel(pr.get_domain()), 0, 1)
|
grid.addWidget(QLabel(pr.get_requestor()), 0, 1)
|
||||||
grid.addWidget(QLabel(_("Expires") + ':'), 1, 0)
|
grid.addWidget(QLabel(_("Expires") + ':'), 1, 0)
|
||||||
grid.addWidget(QLabel(format_time(pr.get_expiration_date())), 1, 1)
|
grid.addWidget(QLabel(format_time(pr.get_expiration_date())), 1, 1)
|
||||||
grid.addWidget(QLabel(_("Memo") + ':'), 2, 0)
|
grid.addWidget(QLabel(_("Memo") + ':'), 2, 0)
|
||||||
|
|
|
@ -78,7 +78,7 @@ class PaymentRequest:
|
||||||
def __init__(self, data):
|
def __init__(self, data):
|
||||||
self.raw = data
|
self.raw = data
|
||||||
self.parse(data)
|
self.parse(data)
|
||||||
self.domain = None # known after verify
|
self.requestor = None # known after verify
|
||||||
self.tx = None
|
self.tx = None
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
|
@ -124,9 +124,9 @@ class PaymentRequest:
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.error = str(e)
|
self.error = str(e)
|
||||||
return
|
return
|
||||||
self.domain = x.get_common_name()
|
self.requestor = x.get_common_name()
|
||||||
if self.domain.startswith('*.'):
|
if self.requestor.startswith('*.'):
|
||||||
self.domain = self.domain[2:]
|
self.requestor = self.requestor[2:]
|
||||||
else:
|
else:
|
||||||
if not x.check_ca():
|
if not x.check_ca():
|
||||||
self.error = "ERROR: Supplied CA Certificate Error"
|
self.error = "ERROR: Supplied CA Certificate Error"
|
||||||
|
@ -202,8 +202,8 @@ class PaymentRequest:
|
||||||
def get_amount(self):
|
def get_amount(self):
|
||||||
return sum(map(lambda x:x[2], self.outputs))
|
return sum(map(lambda x:x[2], self.outputs))
|
||||||
|
|
||||||
def get_domain(self):
|
def get_requestor(self):
|
||||||
return self.domain if self.domain else 'unknown'
|
return self.requestor if self.requestor else 'unknown'
|
||||||
|
|
||||||
def get_verify_status(self):
|
def get_verify_status(self):
|
||||||
return self.error
|
return self.error
|
||||||
|
@ -306,11 +306,10 @@ class InvoiceStore(object):
|
||||||
except:
|
except:
|
||||||
return
|
return
|
||||||
for k, v in d.items():
|
for k, v in d.items():
|
||||||
ser, domain, tx = v
|
|
||||||
try:
|
try:
|
||||||
pr = PaymentRequest(ser.decode('hex'))
|
pr = PaymentRequest(v.get('hex').decode('hex'))
|
||||||
pr.tx = tx
|
pr.tx = v.get('txid')
|
||||||
pr.domain = domain
|
pr.requestor = v.get('requestor')
|
||||||
self.invoices[k] = pr
|
self.invoices[k] = pr
|
||||||
except:
|
except:
|
||||||
continue
|
continue
|
||||||
|
@ -318,10 +317,15 @@ class InvoiceStore(object):
|
||||||
def save(self):
|
def save(self):
|
||||||
l = {}
|
l = {}
|
||||||
for k, pr in self.invoices.items():
|
for k, pr in self.invoices.items():
|
||||||
l[k] = str(pr).encode('hex'), pr.domain, pr.tx
|
l[k] = {
|
||||||
|
'hex': str(pr).encode('hex'),
|
||||||
|
'requestor': pr.get_requestor(),
|
||||||
|
'txid': pr.tx
|
||||||
|
}
|
||||||
path = os.path.join(self.config.path, 'invoices')
|
path = os.path.join(self.config.path, 'invoices')
|
||||||
with open(path, 'w') as f:
|
with open(path, 'w') as f:
|
||||||
r = f.write(json.dumps(l))
|
s = json.dumps(l, indent=4, sort_keys=True)
|
||||||
|
r = f.write(s)
|
||||||
|
|
||||||
def get_status(self, key):
|
def get_status(self, key):
|
||||||
pr = self.get(key)
|
pr = self.get(key)
|
||||||
|
@ -355,32 +359,3 @@ class InvoiceStore(object):
|
||||||
# sort
|
# sort
|
||||||
return self.invoices.values()
|
return self.invoices.values()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
|
|
||||||
util.set_verbosity(True)
|
|
||||||
|
|
||||||
try:
|
|
||||||
uri = sys.argv[1]
|
|
||||||
except:
|
|
||||||
print "usage: %s url"%sys.argv[0]
|
|
||||||
print "example url: \"bitcoin:17KjQgnXC96jakzJe9yo8zxqerhqNptmhq?amount=0.0018&r=https%3A%2F%2Fbitpay.com%2Fi%2FMXc7qTM5f87EC62SWiS94z\""
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
address, amount, label, message, request_url = util.parse_URI(uri)
|
|
||||||
from simple_config import SimpleConfig
|
|
||||||
config = SimpleConfig()
|
|
||||||
pr = PaymentRequest(config)
|
|
||||||
pr.read(request_url)
|
|
||||||
if not pr.verify():
|
|
||||||
print 'verify failed'
|
|
||||||
print pr.error
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
print 'Payment Request Verified Domain: ', pr.domain
|
|
||||||
print 'outputs', pr.outputs
|
|
||||||
print 'Payment Memo: ', pr.details.memo
|
|
||||||
|
|
||||||
tx = "blah"
|
|
||||||
pr.send_ack(tx, refund_addr = "1vXAXUnGitimzinpXrqDWVU4tyAAQ34RA")
|
|
||||||
|
|
Loading…
Reference in New Issue