FLO-appStore/getJson.py
sairajzero 3b17810e63 update
2018-09-30 20:08:41 +05:30

90 lines
2.3 KiB
Python

import requests
import json
import subprocess
import hashlib
JsonAddress = 'oXa7t72t3CgnR11ycxVfdupz55eucHufHj'
def searchDict(dicArr,key,val):
for i in range(len(dicArr)):
if(dicArr[i][key]==val):
return i
return -1
def findHash(data):
result = hashlib.sha1(data.encode())
return str(result.hexdigest())
def readUnitFromBlockchain(txid):
rawtx = subprocess.check_output(["flo-cli","--testnet", "getrawtransaction", str(txid)])
rawtx = str(rawtx)
rawtx = rawtx[2:-3]
tx = subprocess.check_output(["flo-cli","--testnet", "decoderawtransaction", str(rawtx)])
content = json.loads(tx)
text = content['floData']
return str(text)
def Dappend(Dapps,app):
i = searchDict(Dapps,'id',app['id'])
if (i!=-1):
del(Dapps[i])
if ('remove' not in app.keys()):
Dapps = Dapps + [app]
return Dapps
def verifyHash(localHash,txid):
content = readUnitFromBlockchain(txid)
try:
if(json.loads(content)['hash'] == localHash):
print("true")
return True
else:
return False
except:
return False
def getJsonData(Dapps, lastTx):
r = requests.get("https://testnet.florincoin.info/ext/getaddress/"+JsonAddress)
data = json.loads(r.content)
#print(data)
localHash = findHash(str(Dapps))
if(lastTx == -1 or not verifyHash(localHash,data['last_txs'][lastTx]['addresses'])):
lastTx = 0
print(lastTx)
for i in range(lastTx,len(data['last_txs'])):
#print(i)
if(data['last_txs'][i]['type']=='vin'):
content = readUnitFromBlockchain(data['last_txs'][i]['addresses'])
#print(content)
try:
app = json.loads(content)
except Exception as e:
#print(e)
continue
#print(app)
if 'Dapp' in app.keys():
Dapps = Dappend(Dapps,app['Dapp'])
#print(Dapps)
return (Dapps,len(data['last_txs'])-1)
try:
with open('Apps.json','r') as F:
data=json.loads(F.read())
apps = data['Dapps']
lastTx = data['lastTx']
except:
apps = []
lastTx = -1
print(apps)
print(lastTx)
(apps,lastTx) = getJsonData(apps,lastTx)
with open('Apps.json','w+') as F:
data = json.dumps({'Dapps':apps ,'lastTx':lastTx})
print(data)
F.write(data)