From deb6354af6f63c582ec6345334490e28a3271fac Mon Sep 17 00:00:00 2001 From: Vivek Teega Date: Wed, 22 May 2019 16:33:15 +0530 Subject: [PATCH] Adding support for tokens --- ranchimallflo-api.py | 92 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 88 insertions(+), 4 deletions(-) diff --git a/ranchimallflo-api.py b/ranchimallflo-api.py index 30669cb..cbb6436 100644 --- a/ranchimallflo-api.py +++ b/ranchimallflo-api.py @@ -8,12 +8,96 @@ from flask import Flask dbfolder = '' app = Flask(__name__) -@app.route('/api/v1.0/getsmartContractlist', methods=['GET']) -def getcontractlist(): - '''token = request.args.get('token') +# FLO TOKEN APIs + +@app.route('/api/v1.0/getaddressbalance', methods=['GET']) +def getaddressbalance(): + address = request.args.get('address') + token = request.args.get('token') + + if address is None or token is None: + return jsonify(result='error') + + dblocation = dbfolder + token + '.db' + if os.path.exists(dblocation): + conn = sqlite3.connect(dblocation) + c = conn.cursor() + else: + return 'Token doesn\'t exist' + c.execute('SELECT SUM(transferBalance) FROM activeTable WHERE address="{}"'.format(address)) + balance = c.fetchall()[0][0] + conn.close() + return jsonify(result='ok', token=token, address=address, balance=balance) + + +@app.route('/api/v1.0/gettokeninfo', methods=['GET']) +def gettokeninfo(): + token = request.args.get('token') if token is None: - return jsonify(result='error')''' + return jsonify(result='error') + + dblocation = dbfolder + token + '.db' + if os.path.exists(dblocation): + conn = sqlite3.connect(dblocation) + c = conn.cursor() + else: + return 'Token doesn\'t exist' + c.execute('SELECT * FROM transactionHistory WHERE id=1') + incorporationRow = c.fetchall()[0] + c.execute('SELECT COUNT (DISTINCT address) FROM activeTable') + numberOf_distinctAddresses = c.fetchall()[0][0] + conn.close() + return jsonify(result='ok', token=token, incorporationAddress=incorporationRow[2], tokenSupply=incorporationRow[3], + transactionHash=incorporationRow[6], blockchainReference=incorporationRow[7], + activeAddress_no=numberOf_distinctAddresses) + + +@app.route('/api/v1.0/gettransactions', methods=['GET']) +def gettransactions(): + token = request.args.get('token') + senderFloAddress = request.args.get('senderFloAddress') + destFloAddress = request.args.get('destFloAddress') + + if token is None: + return jsonify(result='error') + + dblocation = dbfolder + token + '.db' + if os.path.exists(dblocation): + conn = sqlite3.connect(dblocation) + conn.row_factory = sqlite3.Row + c = conn.cursor() + else: + return 'Token doesn\'t exist' + + if senderFloAddress and not destFloAddress: + c.execute( + 'SELECT blockNumber, sourceFloAddress, destFloAddress, transferAmount, blockchainReference FROM transactionHistory WHERE sourceFloAddress="{}" ORDER BY id DESC LIMIT 100'.format( + senderFloAddress)) + if not senderFloAddress and destFloAddress: + c.execute( + 'SELECT blockNumber, sourceFloAddress, destFloAddress, transferAmount, blockchainReference FROM transactionHistory WHERE destFloAddress="{}" ORDER BY id DESC LIMIT 100'.format( + destFloAddress)) + if senderFloAddress and destFloAddress: + c.execute( + 'SELECT blockNumber, sourceFloAddress, destFloAddress, transferAmount, blockchainReference FROM transactionHistory WHERE sourceFloAddress="{}" OR destFloAddress="{}" ORDER BY id DESC LIMIT 100'.format( + senderFloAddress, destFloAddress)) + + else: + c.execute( + 'SELECT blockNumber, sourceFloAddress, destFloAddress, transferAmount, blockchainReference FROM transactionHistory ORDER BY id DESC LIMIT 100') + latestTransactions = c.fetchall() + conn.close() + rowarray_list = [] + for row in latestTransactions: + d = dict(zip(row.keys(), row)) # a dict with column names as keys + rowarray_list.append(d) + return jsonify(result='ok', transactions=rowarray_list) + +# SMART CONTRACT APIs + +@app.route('/api/v1.0/getsmartContractlist', methods=['GET']) +def getcontractlist(): filelist = [] for item in os.listdir(os.path.join(dbfolder,'smartContracts')): if os.path.isfile(os.path.join(dbfolder, 'smartContracts', item)):