Added new API v2.0/flocoreHeight

This commit is contained in:
RanchiMall Dev 2023-01-06 11:54:28 +00:00
parent 121056110e
commit f67151c7d5
2 changed files with 26 additions and 55 deletions

View File

@ -1,7 +1,6 @@
dbfolder = ''
sse_pubKey = '<public key in the format of pybtc python library>'
apiUrl = 'https://flosight.duckdns.org/api/'
# your apilayer.net access key
apilayerAccesskey = '<accesskey>'
dbfolder = 'path to FLO Token Scanner data folder'
sse_pubKey = ''
apiUrl = 'flosight api url'
apilayerAccesskey = 'api layer access key'
FLO_DATA_DIR = '/home/username/.flo'
FLO_CLI_PATH = '/usr/local/bin/flo-cli'

View File

@ -8,6 +8,7 @@ import time
from datetime import datetime
from quart import jsonify, make_response, Quart, render_template, request, flash, redirect, url_for, send_file
from quart_cors import cors
import subprocess
import asyncio
from typing import Optional
@ -177,37 +178,25 @@ async def getTokenTransactions():
if senderFloAddress and not destFloAddress:
if limit is None:
c.execute('SELECT jsonData, parsedFloData FROM transactionHistory WHERE sourceFloAddress="{}" ORDER BY id DESC LIMIT 100'.format(
senderFloAddress))
c.execute('SELECT jsonData, parsedFloData FROM transactionHistory WHERE sourceFloAddress="{}" ORDER BY id DESC'.format(senderFloAddress))
else:
c.execute('SELECT jsonData, parsedFloData FROM transactionHistory WHERE sourceFloAddress="{}" ORDER BY id DESC LIMIT {}'.format(
senderFloAddress, limit))
c.execute('SELECT jsonData, parsedFloData FROM transactionHistory WHERE sourceFloAddress="{}" ORDER BY id DESC LIMIT {}'.format(senderFloAddress, limit))
elif not senderFloAddress and destFloAddress:
if limit is None:
c.execute(
'SELECT jsonData, parsedFloData FROM transactionHistory WHERE destFloAddress="{}" ORDER BY id DESC LIMIT 100'.format(
destFloAddress))
c.execute('SELECT jsonData, parsedFloData FROM transactionHistory WHERE destFloAddress="{}" ORDER BY id DESC'.format(destFloAddress))
else:
c.execute(
'SELECT jsonData, parsedFloData FROM transactionHistory WHERE destFloAddress="{}" ORDER BY id DESC LIMIT {}'.format(
destFloAddress, limit))
c.execute('SELECT jsonData, parsedFloData FROM transactionHistory WHERE destFloAddress="{}" ORDER BY id DESC LIMIT {}'.format(destFloAddress, limit))
elif senderFloAddress and destFloAddress:
if limit is None:
c.execute(
'SELECT jsonData, parsedFloData FROM transactionHistory WHERE sourceFloAddress="{}" AND destFloAddress="{}" ORDER BY id DESC LIMIT 100'.format(
senderFloAddress, destFloAddress))
c.execute('SELECT jsonData, parsedFloData FROM transactionHistory WHERE sourceFloAddress="{}" AND destFloAddress="{}" ORDER BY id DESC'.format(senderFloAddress, destFloAddress))
else:
c.execute(
'SELECT jsonData, parsedFloData FROM transactionHistory WHERE sourceFloAddress="{}" AND destFloAddress="{}" ORDER BY id DESC LIMIT {}'.format(
senderFloAddress, destFloAddress, limit))
c.execute('SELECT jsonData, parsedFloData FROM transactionHistory WHERE sourceFloAddress="{}" AND destFloAddress="{}" ORDER BY id DESC LIMIT {}'.format(senderFloAddress, destFloAddress, limit))
else:
if limit is None:
c.execute(
'SELECT jsonData, parsedFloData FROM transactionHistory ORDER BY id DESC LIMIT 100')
c.execute('SELECT jsonData, parsedFloData FROM transactionHistory ORDER BY id DESC')
else:
c.execute(
'SELECT jsonData, parsedFloData FROM transactionHistory ORDER BY id DESC LIMIT {}'.format(limit))
c.execute('SELECT jsonData, parsedFloData FROM transactionHistory ORDER BY id DESC LIMIT {}'.format(limit))
transactionJsonData = c.fetchall()
conn.close()
rowarray_list = {}
@ -896,7 +885,7 @@ async def getLatestTransactionDetails():
item[2])
tempdict[json.loads(item[3])['txid']] = tx_parsed_details
else:
c.execute('''SELECT * FROM latestTransactions WHERE blockNumber IN (SELECT DISTINCT blockNumber FROM latestTransactions ORDER BY blockNumber DESC LIMIT 100) ORDER BY id ASC;''')
c.execute('''SELECT * FROM latestTransactions WHERE blockNumber IN (SELECT DISTINCT blockNumber FROM latestTransactions ORDER BY blockNumber DESC) ORDER BY id ASC;''')
latestTransactions = c.fetchall()
c.close()
tempdict = {}
@ -1056,19 +1045,6 @@ async def systemData():
return jsonify(systemAddressCount=tokenAddressCount, systemBlockCount=validatedBlockCount, systemTransactionCount=validatedTransactionCount, systemSmartContractCount=contractCount, systemTokenCount=tokenCount, lastscannedblock=lastscannedblock, result='ok')
'''@app.route('/api/v1.0/floscout-bootstrap')
def request_zip():
directory = pathlib.Path("")
data = io.BytesIO()
with zipfile.ZipFile(data, mode="w") as archive:
for file_path in directory.rglob("*"):
archive.write(file_path, arcname=file_path.name)
data.seek(0)
return send_file( data,
mimetype='application/zip',
as_attachment=True,
attachment_filename='data.zip')'''
class ServerSentEvent:
def __init__(
@ -1095,20 +1071,6 @@ class ServerSentEvent:
message = f"{message}\r\n\r\n"
return message.encode('utf-8')
"""@app.route('/', methods=['GET'])
async def index():
return await render_template('index.html')
@app.route('/', methods=['POST'])
async def broadcast():
data = await request.get_json()
for queue in app.clients:
await queue.put(data['message'])
return jsonify(True) """
@app.route('/sse')
async def sse():
queue = asyncio.Queue()
@ -1134,6 +1096,16 @@ async def sse():
response.timeout = None
return response
@app.route('/api/v2.0/flocoreHeight')
async def flocoreHeight_func():
testnet = request.args.get('testnet')
if testnet == None:
blockchaininfo = subprocess.check_output(f"{FLO_CLI_PATH} --datadir={FLO_DATA_DIR} getblockchaininfo", shell=True)
else:
blockchaininfo = subprocess.check_output([f"{FLO_CLI_PATH} --testnet --datadir={FLO_DATA_DIR} getblockchaininfo"], shell=True)
blockchaininfo = json.loads(blockchaininfo)
return jsonify(chain=blockchaininfo["chain"], blocks=blockchaininfo["blocks"],headers=blockchaininfo["headers"],bestblockhash=blockchaininfo["bestblockhash"],difficulty=blockchaininfo["difficulty"],mediantime=blockchaininfo["mediantime"])
@app.route('/api/v1.0/getPrices', methods=['GET'])
async def getPriceData():