diff --git a/app/api/__init__.py b/app/api/__init__.py index 1bc5875..decbab6 100644 --- a/app/api/__init__.py +++ b/app/api/__init__.py @@ -43,12 +43,13 @@ app.add_route(s_api_v1_blockchain_send_purchase_content_message, "/api/v1/blockc @app.exception(BaseException) async def s_handle_exception(request, exception): response_buffer = response.json({"error": "An internal server error occurred"}, status=500) - response_buffer = await close_db_session(request, response_buffer) - try: raise exception + except AssertionError as e: + response_buffer = response.json({"error": str(e)}, status=400) except BaseException as e: make_log("sanic_exception", f"Exception: {e}" + '\n' + str(traceback.format_exc()), level='error') + response_buffer = await close_db_session(request, response_buffer) return response_buffer diff --git a/app/api/routes/_blockchain.py b/app/api/routes/_blockchain.py index 2c50ce3..d976c6b 100644 --- a/app/api/routes/_blockchain.py +++ b/app/api/routes/_blockchain.py @@ -5,12 +5,13 @@ from datetime import datetime, timedelta def valid_royalty_params(royalty_params): assert sum([x['value'] for x in royalty_params]) == 10000, "Values of royalties should sum to 10000" - for field_key, field_value in { - 'address': lambda x: isinstance(x, str), - 'value': lambda x: (isinstance(x, int) and 0 <= x <= 10000) - }.items(): - assert field_key in royalty_params, f"No {field_key} provided" - assert field_value(royalty_params[field_key]), f"Invalid {field_key} provided" + for royalty_param in royalty_params: + for field_key, field_value in { + 'address': lambda x: isinstance(x, str), + 'value': lambda x: (isinstance(x, int) and 0 <= x <= 10000) + }.items(): + assert field_key in royalty_param, f"No {field_key} provided" + assert field_value(royalty_param[field_key]), f"Invalid {field_key} provided" return True