From 0eb93ad916be044dc0d8a18b9d9bb25cd5c027a7 Mon Sep 17 00:00:00 2001 From: RanchiMall Dev Date: Sat, 10 Feb 2024 06:49:06 +0000 Subject: [PATCH] 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 --- ranchimallflo_api.py | 38 ++++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/ranchimallflo_api.py b/ranchimallflo_api.py index bf6c062..db903ca 100644 --- a/ranchimallflo_api.py +++ b/ranchimallflo_api.py @@ -1646,7 +1646,7 @@ async def info(): @app.route('/api/v2/broadcastTx/') 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 @@ -2063,14 +2063,14 @@ async def getcontractparticipants_v2(): returnval = [] for row in contract_participants: participation = { - 'participantFloAddress': row[1], - 'participationAmount': row[2], - 'swapPrice': float(row[3]), - 'transactionHash': row[4], - 'blockNumber': row[5], - 'blockHash': row[6], - 'swapAmount': row[7] - } + 'participantFloAddress': row[1], + 'participationAmount': row[2], + 'swapPrice': float(row[3]), + 'transactionHash': row[4], + 'blockNumber': row[5], + 'blockHash': row[6], + 'swapAmount': row[7] + } returnval.append(participation) conn.close() 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') 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): - return jsonify(description='pass both, contractName and contractAddress as url parameters'), 400 + # Url param checking + 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() + contractAddress = contractAddress.strip() systemdb_location = os.path.join(dbfolder, 'system.db') if os.path.isfile(systemdb_location): @@ -2657,4 +2663,4 @@ scheduler.start() atexit.register(lambda: scheduler.shutdown()) if __name__ == "__main__": - app.run(debug=debug_status, host=HOST, port=PORT) \ No newline at end of file + app.run(debug=debug_status, host=HOST, port=PORT)