Browse Source

store json record requests

283
ThomasV 10 years ago
parent
commit
3bb00f0006
  1. 35
      lib/commands.py
  2. 106
      lib/payrequest.html

35
lib/commands.py

@ -542,17 +542,16 @@ class Commands:
}
# check if bip70 file exists
rdir = self.config.get('requests_dir')
if rdir:
path = os.path.join(rdir, key + '.bip70')
if os.path.exists(path):
out['path'] = path
url = 'file://' + path
r = self.config.get('url_rewrite')
if r:
a, b = r
url = url.replace(a, b)
out['request_url'] = url
out['URI'] += '&r=' + url
path = os.path.join(rdir, key + '.bip70')
if rdir and os.path.exists(path):
out['path'] = path
baseurl = 'file://' + rdir
rewrite = self.config.get('url_rewrite')
if rewrite:
baseurl = baseurl.replace(*rewrite)
out['request_url'] = os.path.join(baseurl, key + '.bip70')
out['URI'] += '&r=' + out['request_url']
out['index_url'] = os.path.join(baseurl, 'index.html') + '?id=' + key
return out
@ -575,16 +574,22 @@ class Commands:
return map(self._format_request, self.wallet.get_sorted_requests())
@command('w')
def addrequest(self, requested_amount, reason='', expiration=None):
def addrequest(self, requested_amount, reason='', expiration=60*60):
"""Create a payment request."""
amount = int(Decimal(requested_amount)*COIN)
key = self.wallet.add_payment_request(amount, reason, expiration)
if key is None:
return
# create file
req = self.wallet.get_payment_request(key)
paymentrequest.publish_request(self.config, key, req)
return self._format_request(req)
rdir = self.config.get('requests_dir')
if rdir:
path = paymentrequest.publish_request(self.config, key, req)
req['path'] = path
req = self._format_request(req)
if rdir:
with open(os.path.join(rdir, key + '.json'), 'w') as f:
f.write(json.dumps(req))
return req
@command('w')
def rmrequest(self, address):

106
lib/payrequest.html

@ -2,66 +2,69 @@
<html>
<head>
<title>Payment request</title>
<script type="text/javascript" charset="utf-8" src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script type="text/javascript" charset="utf-8" src="https://code.jquery.com/jquery-1.9.1.min.js"></script>
<script type="text/javascript" src="https://raw.github.com/datagraph/jquery-jsonrpc/master/jquery.jsonrpc.js"></script>
<script type="text/javascript" src="https://raw.githubusercontent.com/davidshimjs/qrcodejs/master/qrcode.js"></script>
<link rel="stylesheet" type="text/css" href="/css/result-light.css">
<script type="text/javascript" src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
<link rel="stylesheet" type="text/css" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css">
<script type="text/javascript" src="https://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
<link rel="stylesheet" type="text/css" href="https://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css">
<script type="text/javascript">
$(document).ready(function() {
$.jsonRPC.setup({
endPoint : "http://localhost:7777",
namespace : ""
});
if (window.location.hash) {
$.jsonRPC.request('getrequest', {
params : [window.location.hash.substr(1)],
success : function(data) {
new QRCode(document.getElementById("qrcode"), data.result.URI);
$("<p />").text(data.result.reason).appendTo($("p#reason"));
$("<p />").text(data.result.amount + "BTC").appendTo($("p#amount"));
$("a").attr("href", data.result.URI);
$("<p />").text("Powered by Electrum").appendTo($("p#powered"));
$(function () {
var current;
var max = 100;
var initial = data.result.timestamp;
var duration = data.result.expiration;
var current = 100 * (Math.floor(Date.now()/1000) - initial)/duration;
$("#progressbar").progressbar({
value: current,
max: max
});
function update() {
current = 100 * (Math.floor(Date.now()/1000) - initial)/duration;
$("#progressbar").progressbar({
value: current
});
if (duration && current >= max) {
$("#container").html("expired:", duration);
}
if(!duration) clearInterval(interval);
};
var interval = setInterval(update, 1000);
});
function getUrlParameter(sParam)
{
var sPageURL = window.location.search.substring(1);
var sURLVariables = sPageURL.split('&');
for (var i = 0; i < sURLVariables.length; i++)
{
var sParameterName = sURLVariables[i].split('=');
if (sParameterName[0] == sParam)
{
return sParameterName[1];
}
}
}
},
error : function(data) {
$("<p />").text("error").appendTo($("p#error"));
$("<p />").text(data.error.message).appendTo($("p#error"));
}
});
}
var id = getUrlParameter('id');
if (id) {
var jqxhr = $.getJSON(id + ".json", function() {
console.log( "success" );
})
.done( function(data) {
new QRCode(document.getElementById("qrcode"), data.URI);
$("<p />").text(data.reason).appendTo($("p#reason"));
$("<p />").text(data.amount + "BTC").appendTo($("p#amount"));
$("a").attr("href", data.URI);
$("<p />").text("Powered by Electrum").appendTo($("p#powered"));
$(function () {
var current;
var max = 100;
var initial = data.timestamp;
var duration = data.expiration;
var current = 100 * (Math.floor(Date.now()/1000) - initial)/duration;
$("#progressbar").progressbar({
value: current,
max: max
});
function update() {
current = 100 * (Math.floor(Date.now()/1000) - initial)/duration;
$("#progressbar").progressbar({
value: current
});
if (current >= max) {
$("#container").html("expired:", duration);
}
};
var interval = setInterval(update, 1000);
});
</script>
})
.fail(function() {
console.log( "error fail" );
$("<p />").text("error").appendTo($("p#error"));
});
};
</script>
</head>
<body>
<div id="container" style="width:20em; text-align:center; margin:auto; font-family:arial, serif;">
@ -79,4 +82,3 @@ $(function () {
</body>
</html>

Loading…
Cancel
Save