lighthouse.js/decoder/decoder.py

60 lines
1.7 KiB
Python
Raw Normal View History

2017-09-05 20:56:29 +02:00
#!/usr/bin/python
# -*- coding: utf-8 -*-
import json, os
from bitcoinrpc.authproxy import AuthServiceProxy
from lbryschema.decode import smart_decode
from flask import Flask, url_for
app = Flask(__name__)
2017-09-05 20:56:29 +02:00
def get_lbrycrdd_connection_details():
with open(os.path.dirname(os.path.realpath(__file__))+'/config.json', 'r') as f:
config = json.load(f)
rpc_user = config['rpc_user']
rpc_pass = config['rpc_password']
rpc_port = config['rpc_port']
rpc_url = config['rpc_url']
2017-09-05 20:56:29 +02:00
return 'http://%s:%s@%s:%i' % (rpc_user, rpc_pass, rpc_url,
rpc_port)
@app.errorhandler(500)
def internal_error(error):
return 'error when decoding claims'
2017-09-05 20:56:29 +02:00
@app.route('/claim_decode/<txid>/<nout>')
def api_decode(txid, nout):
connection_string = get_lbrycrdd_connection_details()
rpc = AuthServiceProxy(connection_string)
result = rpc.getclaimsfortx(txid)
claim = None
for claim_out in result:
if claim_out['nOut'] == int(nout):
claim = claim_out
break
if claim:
2017-09-05 20:56:29 +02:00
converted = ''.join([chr(ord(i)) for i in claim['value']])
decoded = smart_decode(converted)
claim['value'] = decoded.claim_dict
return json.dumps(claim)
2017-09-05 20:56:29 +02:00
@app.route('/claim_decodeinv/<claimid>')
def api_decodebyclaim(claimid):
connection_string = get_lbrycrdd_connection_details()
rpc = AuthServiceProxy(connection_string)
claim = rpc.getvalueforname(claimid)
if claim:
2017-09-05 20:56:29 +02:00
converted = ''.join([chr(ord(i)) for i in claim['value']])
decoded = smart_decode(converted)
claim['value'] = decoded.claim_dict
return json.dumps(claim)
if __name__ == '__main__':
2017-09-05 20:56:29 +02:00
app.run(host='127.0.0.1')