Error handling

1. Fixed error handling in /api/v2/participantDetails
The case where contractAddress nor contractName was passed is handled now

2. Fixed error handling in /api/v2/broadcastTx/
Datadir parameter which is unnecesary for the cli command is removed
This commit is contained in:
RanchiMall Dev 2024-02-10 06:49:06 +00:00
parent cce8d34be2
commit 0eb93ad916

View File

@ -1646,7 +1646,7 @@ async def info():
@app.route('/api/v2/broadcastTx/<raw_transaction_hash>') @app.route('/api/v2/broadcastTx/<raw_transaction_hash>')
async def broadcastTx_v2(raw_transaction_hash): async def broadcastTx_v2(raw_transaction_hash):
p1 = subprocess.run(['flo-cli',f"-datadir={FLO_DATA_DIR}",'sendrawtransaction',raw_transaction_hash], capture_output=True) p1 = subprocess.run(['flo-cli','sendrawtransaction',raw_transaction_hash], capture_output=True)
return jsonify(args=p1.args,returncode=p1.returncode,stdout=p1.stdout.decode(),stderr=p1.stderr.decode()), 200 return jsonify(args=p1.args,returncode=p1.returncode,stdout=p1.stdout.decode(),stderr=p1.stderr.decode()), 200
@ -2063,14 +2063,14 @@ async def getcontractparticipants_v2():
returnval = [] returnval = []
for row in contract_participants: for row in contract_participants:
participation = { participation = {
'participantFloAddress': row[1], 'participantFloAddress': row[1],
'participationAmount': row[2], 'participationAmount': row[2],
'swapPrice': float(row[3]), 'swapPrice': float(row[3]),
'transactionHash': row[4], 'transactionHash': row[4],
'blockNumber': row[5], 'blockNumber': row[5],
'blockHash': row[6], 'blockHash': row[6],
'swapAmount': row[7] 'swapAmount': row[7]
} }
returnval.append(participation) returnval.append(participation)
conn.close() conn.close()
return jsonify(contractName=contractName, contractAddress=contractAddress, contractType=contractStructure['contractType'], contractSubtype=contractStructure['subtype'], participantInfo=returnval), 200 return jsonify(contractName=contractName, contractAddress=contractAddress, contractType=contractStructure['contractType'], contractSubtype=contractStructure['subtype'], participantInfo=returnval), 200
@ -2087,14 +2087,20 @@ async def participantDetails(floAddress):
contractName = request.args.get('contractName') contractName = request.args.get('contractName')
contractAddress = request.args.get('contractAddress') contractAddress = request.args.get('contractAddress')
if contractAddress is not None and not check_flo_address(contractAddress, is_testnet):
return jsonify(description='contractAddress validation failed'), 400
contractAddress = contractAddress.strip()
if (contractName and contractAddress is None) or (contractName is None and contractAddress): # Url param checking
return jsonify(description='pass both, contractName and contractAddress as url parameters'), 400 if contractName is None and contractAddress is None:
return jsonify(description='Pass both, contractName and contractAddress as url parameters'), 400
elif contractName is None:
return jsonify(description='Pass contractName as url parameter'), 400
else:
return jsonify(description='Pass contractAddress as url parameter'), 400
if not check_flo_address(contractAddress, is_testnet):
return jsonify(description='contractAddress validation failed'), 400
contractName = contractName.strip().lower() contractName = contractName.strip().lower()
contractAddress = contractAddress.strip()
systemdb_location = os.path.join(dbfolder, 'system.db') systemdb_location = os.path.join(dbfolder, 'system.db')
if os.path.isfile(systemdb_location): if os.path.isfile(systemdb_location):
@ -2657,4 +2663,4 @@ scheduler.start()
atexit.register(lambda: scheduler.shutdown()) atexit.register(lambda: scheduler.shutdown())
if __name__ == "__main__": if __name__ == "__main__":
app.run(debug=debug_status, host=HOST, port=PORT) app.run(debug=debug_status, host=HOST, port=PORT)