minor refactorings

This commit is contained in:
Nicolás Sánchez 2025-08-18 16:10:09 -03:00
parent 29c3f37a65
commit c667c70a64
2 changed files with 548 additions and 540 deletions

208
main.py
View File

@ -49,6 +49,7 @@ def shutdown_handler(signum, _):
signal.signal(signal.SIGINT, shutdown_handler) signal.signal(signal.SIGINT, shutdown_handler)
signal.signal(signal.SIGTERM, shutdown_handler) signal.signal(signal.SIGTERM, shutdown_handler)
def seconds_to_time(total_seconds: float) -> str: def seconds_to_time(total_seconds: float) -> str:
''' '''
Takes an int or float as an input and it returns a D:HH:MM:SS formatted string. Takes an int or float as an input and it returns a D:HH:MM:SS formatted string.
@ -473,9 +474,10 @@ def return_global_status():
None None
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys: if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in valid_keys:
return unwrapped_global_status()
return jsonify({'Error': 'API key invalid'}), 401 return jsonify({'Error': 'API key invalid'}), 401
return unwrapped_global_status()
@base_api.route("/paused_traders", methods=['GET']) @base_api.route("/paused_traders", methods=['GET'])
def return_paused_status(): def return_paused_status():
@ -485,9 +487,10 @@ def return_paused_status():
Parameters: Parameters:
None None
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys: if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in valid_keys:
return unwrapped_paused_traders()
return jsonify({'Error': 'API key invalid'}), 401 return jsonify({'Error': 'API key invalid'}), 401
return unwrapped_paused_traders()
@base_api.route("/worker_status", methods=['GET']) @base_api.route("/worker_status", methods=['GET'])
def return_worker_status(): def return_worker_status():
@ -499,7 +502,8 @@ def return_worker_status():
quote: str quote: str
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys: if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in valid_keys:
return jsonify({'Error': 'API key invalid'}), 401
try: try:
base = request.args.get("base") base = request.args.get("base")
quote = request.args.get("quote") quote = request.args.get("quote")
@ -507,7 +511,7 @@ def return_worker_status():
except Exception as e: except Exception as e:
print(e) print(e)
return jsonify({'Error': 'Halp'}) return jsonify({'Error': 'Halp'})
return jsonify({'Error': 'API key invalid'}), 401
@base_api.route("/view_old_long", methods=["GET"]) @base_api.route("/view_old_long", methods=["GET"])
def return_old_long(): def return_old_long():
@ -520,7 +524,8 @@ def return_old_long():
from_file: bool from_file: bool
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys: if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in valid_keys:
return jsonify({'Error': 'API key invalid'}), 401
try: try:
base = request.args.get("base") base = request.args.get("base")
quote = request.args.get("quote") quote = request.args.get("quote")
@ -529,7 +534,7 @@ def return_old_long():
except Exception as e: except Exception as e:
print(e) print(e)
return jsonify({'Error': 'Halp'}) return jsonify({'Error': 'Halp'})
return jsonify({'Error': 'API key invalid'}), 401
@base_api.route("/switch_to_long_price", methods=["GET"]) @base_api.route("/switch_to_long_price", methods=["GET"])
def return_switch_price(): def return_switch_price():
@ -541,7 +546,8 @@ def return_switch_price():
quote: str quote: str
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys: if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in valid_keys:
return jsonify({'Error': 'API key invalid'}), 401
try: try:
base = request.args.get("base") base = request.args.get("base")
quote = request.args.get("quote") quote = request.args.get("quote")
@ -549,7 +555,7 @@ def return_switch_price():
except Exception as e: except Exception as e:
print(e) print(e)
return jsonify({'Error': 'Halp'}) return jsonify({'Error': 'Halp'})
return jsonify({'Error': 'API key invalid'}), 401
@base_api.route("/base_add_so_calculation", methods=["GET"]) @base_api.route("/base_add_so_calculation", methods=["GET"])
@ -562,7 +568,8 @@ def return_base_add_so_calculation():
quote: str quote: str
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys: if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in valid_keys:
return jsonify({'Error': 'API key invalid'}), 401
try: try:
base = request.args.get("base") base = request.args.get("base")
quote = request.args.get("quote") quote = request.args.get("quote")
@ -570,7 +577,6 @@ def return_base_add_so_calculation():
except Exception as e: except Exception as e:
print(e) print(e)
return jsonify({'Error': 'Halp'}) return jsonify({'Error': 'Halp'})
return jsonify({'Error': 'API key invalid'}), 401
@base_api.route("/get_all_worker_status", methods=['GET']) @base_api.route("/get_all_worker_status", methods=['GET'])
@ -582,9 +588,10 @@ def return_all_worker_status():
None None
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys: if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in valid_keys:
return unwrapped_return_all_worker_status()
return jsonify({'Error': 'API key invalid'}), 401 return jsonify({'Error': 'API key invalid'}), 401
return unwrapped_return_all_worker_status()
@base_api.route("/add_pair", methods=['POST']) @base_api.route("/add_pair", methods=['POST'])
def add_pair(): def add_pair():
@ -596,7 +603,8 @@ def add_pair():
quote: str quote: str
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys: if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in valid_keys:
return jsonify({'Error': 'API key invalid'}), 401
try: try:
if request.json is None: if request.json is None:
return jsonify({'Error': 'request.json is None'}) return jsonify({'Error': 'request.json is None'})
@ -607,7 +615,7 @@ def add_pair():
except Exception as e: except Exception as e:
print(e) print(e)
return jsonify({'Error': 'Halp'}) return jsonify({'Error': 'Halp'})
return jsonify({'Error': 'API key invalid'}), 401
@base_api.route("/remove_pair", methods=['POST']) @base_api.route("/remove_pair", methods=['POST'])
def remove_pair(): def remove_pair():
@ -619,7 +627,8 @@ def remove_pair():
quote: str quote: str
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys: if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in valid_keys:
return jsonify({'Error': 'API key invalid'}), 401
try: try:
if request.json is None: if request.json is None:
return jsonify({'Error': 'request.json is None'}) return jsonify({'Error': 'request.json is None'})
@ -630,7 +639,7 @@ def remove_pair():
except Exception as e: except Exception as e:
print(e) print(e)
return jsonify({'Error': 'Halp'}) return jsonify({'Error': 'Halp'})
return jsonify({'Error': 'API key invalid'}), 401
@base_api.route("/restart_pair", methods=['POST']) @base_api.route("/restart_pair", methods=['POST'])
def restart_pair(): def restart_pair():
@ -642,7 +651,8 @@ def restart_pair():
quote: str quote: str
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys: if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in valid_keys:
return jsonify({'Error': 'API key invalid'}), 401
try: try:
if request.json is None: if request.json is None:
return jsonify({'Error': 'request.json is None'}) return jsonify({'Error': 'request.json is None'})
@ -653,7 +663,7 @@ def restart_pair():
except Exception as e: except Exception as e:
print(e) print(e)
return jsonify({'Error': 'Halp'}) return jsonify({'Error': 'Halp'})
return jsonify({'Error': 'API key invalid'}), 401
@base_api.route("/import_pair", methods=['POST']) @base_api.route("/import_pair", methods=['POST'])
def import_pair(): def import_pair():
@ -667,7 +677,8 @@ def import_pair():
forced_so_id: str forced_so_id: str
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys: if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in valid_keys:
return jsonify({'Error': 'API key invalid'}), 401
try: try:
if request.json is None: if request.json is None:
return jsonify({'Error': 'request.json is None'}) return jsonify({'Error': 'request.json is None'})
@ -680,7 +691,7 @@ def import_pair():
except Exception as e: except Exception as e:
print(e) print(e)
return jsonify({'Error': 'Halp'}) return jsonify({'Error': 'Halp'})
return jsonify({'Error': 'API key invalid'}), 401
@base_api.route("/switch_to_long", methods=['POST']) @base_api.route("/switch_to_long", methods=['POST'])
def switch_to_long(): def switch_to_long():
@ -693,7 +704,8 @@ def switch_to_long():
calculate_profits: int calculate_profits: int
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys: if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in valid_keys:
return jsonify({'Error': 'API key invalid'}), 401
try: try:
if request.json is None: if request.json is None:
return jsonify({'Error': 'request.json is None'}) return jsonify({'Error': 'request.json is None'})
@ -705,7 +717,7 @@ def switch_to_long():
except Exception as e: except Exception as e:
print(e) print(e)
return jsonify({'Error': 'Halp'}) return jsonify({'Error': 'Halp'})
return jsonify({'Error': 'API key invalid'}), 401
@base_api.route("/switch_to_short", methods=['POST']) @base_api.route("/switch_to_short", methods=['POST'])
def switch_to_short(): def switch_to_short():
@ -717,7 +729,8 @@ def switch_to_short():
quote: str quote: str
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys: if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in valid_keys:
return jsonify({'Error': 'API key invalid'}), 401
try: try:
if request.json is None: if request.json is None:
return jsonify({'Error': 'request.json is None'}) return jsonify({'Error': 'request.json is None'})
@ -728,7 +741,7 @@ def switch_to_short():
except Exception as e: except Exception as e:
print(e) print(e)
return jsonify({'Error': 'Halp'}) return jsonify({'Error': 'Halp'})
return jsonify({'Error': 'API key invalid'}), 401
@base_api.route("/load_old_long", methods=['POST']) @base_api.route("/load_old_long", methods=['POST'])
def load_old_long(): def load_old_long():
@ -740,7 +753,8 @@ def load_old_long():
quote: str quote: str
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys: if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in valid_keys:
return jsonify({'Error': 'API key invalid'}), 401
try: try:
if request.json is None: if request.json is None:
return jsonify({'Error': 'request.json is None'}) return jsonify({'Error': 'request.json is None'})
@ -751,7 +765,7 @@ def load_old_long():
except Exception as e: except Exception as e:
print(e) print(e)
return jsonify({'Error': 'Halp'}) return jsonify({'Error': 'Halp'})
return jsonify({'Error': 'API key invalid'}), 401
@base_api.route("/add_so", methods=['POST']) @base_api.route("/add_so", methods=['POST'])
def add_so(): def add_so():
@ -764,7 +778,8 @@ def add_so():
amount: int amount: int
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys: if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in valid_keys:
return jsonify({'Error': 'API key invalid'}), 401
try: try:
if request.json is None: if request.json is None:
return jsonify({'Error': 'request.json is None'}) return jsonify({'Error': 'request.json is None'})
@ -776,7 +791,6 @@ def add_so():
except Exception as e: except Exception as e:
print(e) print(e)
return jsonify({'Error': 'Halp'}) return jsonify({'Error': 'Halp'})
return jsonify({'Error': 'API key invalid'}), 401
@base_api.route("/mod_tp_level", methods=['POST']) @base_api.route("/mod_tp_level", methods=['POST'])
@ -790,7 +804,8 @@ def mod_tp_level():
amount: float amount: float
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys: if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in valid_keys:
return jsonify({'Error': 'API key invalid'}), 401
try: try:
if request.json is None: if request.json is None:
return jsonify({'Error': 'request.json is None'}) return jsonify({'Error': 'request.json is None'})
@ -802,7 +817,6 @@ def mod_tp_level():
except Exception as e: except Exception as e:
print(e) print(e)
return jsonify({'Error': 'Halp'}) return jsonify({'Error': 'Halp'})
return jsonify({'Error': 'API key invalid'}), 401
@base_api.route("/mod_order_size", methods=['POST']) @base_api.route("/mod_order_size", methods=['POST'])
@ -816,7 +830,8 @@ def mod_order_size():
amount: float amount: float
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys: if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in valid_keys:
return jsonify({'Error': 'API key invalid'}), 401
try: try:
if request.json is None: if request.json is None:
return jsonify({'Error': 'request.json is None'}) return jsonify({'Error': 'request.json is None'})
@ -828,7 +843,6 @@ def mod_order_size():
except Exception as e: except Exception as e:
print(e) print(e)
return jsonify({'Error': 'Halp'}) return jsonify({'Error': 'Halp'})
return jsonify({'Error': 'API key invalid'}), 401
@base_api.route("/mod_default_order_size", methods=['POST']) @base_api.route("/mod_default_order_size", methods=['POST'])
@ -840,7 +854,8 @@ def mod_default_order_size():
amount: float amount: float
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys: if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in valid_keys:
return jsonify({'Error': 'API key invalid'}), 401
try: try:
if request.json is None: if request.json is None:
return jsonify({'Error': 'request.json is None'}) return jsonify({'Error': 'request.json is None'})
@ -850,7 +865,6 @@ def mod_default_order_size():
except Exception as e: except Exception as e:
print(e) print(e)
return jsonify({'Error': 'Halp'}) return jsonify({'Error': 'Halp'})
return jsonify({'Error': 'API key invalid'}), 401
@base_api.route("/mod_global_tp_level", methods=['POST']) @base_api.route("/mod_global_tp_level", methods=['POST'])
@ -862,7 +876,8 @@ def mod_global_tp_level():
amount: float amount: float
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys: if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in valid_keys:
return jsonify({'Error': 'API key invalid'}), 401
try: try:
if request.json is None: if request.json is None:
return jsonify({'Error': 'request.json is None'}) return jsonify({'Error': 'request.json is None'})
@ -872,7 +887,7 @@ def mod_global_tp_level():
except Exception as e: except Exception as e:
print(e) print(e)
return jsonify({'Error': 'Halp'}) return jsonify({'Error': 'Halp'})
return jsonify({'Error': 'API key invalid'}), 401
@base_api.route("/last_call", methods=['POST']) @base_api.route("/last_call", methods=['POST'])
def last_call(): def last_call():
@ -884,7 +899,8 @@ def last_call():
quote: str quote: str
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys: if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in valid_keys:
return jsonify({'Error': 'API key invalid'}), 401
try: try:
if request.json is None: if request.json is None:
return jsonify({'Error': 'request.json is None'}) return jsonify({'Error': 'request.json is None'})
@ -895,7 +911,7 @@ def last_call():
except Exception as e: except Exception as e:
print(e) print(e)
return jsonify({'Error': 'Halp'}) return jsonify({'Error': 'Halp'})
return jsonify({'Error': 'API key invalid'}), 401
@base_api.route("/deferred_last_call", methods=['POST']) @base_api.route("/deferred_last_call", methods=['POST'])
def deferred_last_call(): def deferred_last_call():
@ -908,7 +924,8 @@ def deferred_last_call():
yyyymmdd: str yyyymmdd: str
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys: if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in valid_keys:
return jsonify({'Error': 'API key invalid'}), 401
try: try:
if request.json is None: if request.json is None:
return jsonify({'Error': 'request.json is None'}) return jsonify({'Error': 'request.json is None'})
@ -920,7 +937,7 @@ def deferred_last_call():
except Exception as e: except Exception as e:
print(e) print(e)
return jsonify({'Error': 'Halp'}) return jsonify({'Error': 'Halp'})
return jsonify({'Error': 'API key invalid'}), 401
@base_api.route("/toggle_pause", methods=['POST']) @base_api.route("/toggle_pause", methods=['POST'])
def toggle_pause(): def toggle_pause():
@ -932,7 +949,8 @@ def toggle_pause():
quote: str quote: str
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys: if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in valid_keys:
return jsonify({'Error': 'API key invalid'}), 401
try: try:
if request.json is None: if request.json is None:
return jsonify({'Error': 'request.json is None'}) return jsonify({'Error': 'request.json is None'})
@ -943,7 +961,7 @@ def toggle_pause():
except Exception as e: except Exception as e:
print(e) print(e)
return jsonify({'Error': 'Halp'}) return jsonify({'Error': 'Halp'})
return jsonify({'Error': 'API key invalid'}), 401
@base_api.route("/global_last_call", methods=['POST']) @base_api.route("/global_last_call", methods=['POST'])
def global_last_call(): def global_last_call():
@ -954,9 +972,10 @@ def global_last_call():
None None
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys: if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in valid_keys:
return unwrapped_global_last_call()
return jsonify({'Error': 'API key invalid'}), 401 return jsonify({'Error': 'API key invalid'}), 401
return unwrapped_global_last_call()
@base_api.route("/cancel_global_last_call", methods=['POST']) @base_api.route("/cancel_global_last_call", methods=['POST'])
def cancel_global_last_call(): def cancel_global_last_call():
@ -967,9 +986,10 @@ def cancel_global_last_call():
None None
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys: if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in valid_keys:
return unwrapped_cancel_global_last_call()
return jsonify({'Error': 'API key invalid'}), 401 return jsonify({'Error': 'API key invalid'}), 401
return unwrapped_cancel_global_last_call()
@base_api.route("/add_quote", methods=['POST']) @base_api.route("/add_quote", methods=['POST'])
def add_quote(): def add_quote():
@ -982,7 +1002,8 @@ def add_quote():
amount: float amount: float
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys: if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in valid_keys:
return jsonify({'Error': 'API key invalid'}), 401
try: try:
if request.json is None: if request.json is None:
return jsonify({'Error': 'request.json is None'}) return jsonify({'Error': 'request.json is None'})
@ -994,7 +1015,7 @@ def add_quote():
except Exception as e: except Exception as e:
print(e) print(e)
return jsonify({'Error': 'Halp'}) return jsonify({'Error': 'Halp'})
return jsonify({'Error': 'API key invalid'}), 401
@base_api.route("/missing_pairs", methods=['GET']) @base_api.route("/missing_pairs", methods=['GET'])
def missing_pairs(): def missing_pairs():
@ -1005,9 +1026,10 @@ def missing_pairs():
None None
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys: if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in valid_keys:
return unwrapped_missing_pairs()
return jsonify({'Error': 'API key invalid'}), 401 return jsonify({'Error': 'API key invalid'}), 401
return unwrapped_missing_pairs()
@base_api.route("/toggle_cleanup", methods=['POST']) @base_api.route("/toggle_cleanup", methods=['POST'])
def toggle_cleanup(): def toggle_cleanup():
@ -1019,7 +1041,8 @@ def toggle_cleanup():
quote: str quote: str
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys: if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in valid_keys:
return jsonify({'Error': 'API key invalid'}), 401
try: try:
if request.json is None: if request.json is None:
return jsonify({'Error': 'request.json is None'}) return jsonify({'Error': 'request.json is None'})
@ -1030,7 +1053,7 @@ def toggle_cleanup():
except Exception as e: except Exception as e:
print(e) print(e)
return jsonify({'Error': 'Halp'}) return jsonify({'Error': 'Halp'})
return jsonify({'Error': 'API key invalid'}), 401
@base_api.route("/toggle_autoswitch", methods=['POST']) #type:ignore @base_api.route("/toggle_autoswitch", methods=['POST']) #type:ignore
def toggle_autoswitch(): def toggle_autoswitch():
@ -1042,7 +1065,8 @@ def toggle_autoswitch():
quote: str quote: str
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys: if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in valid_keys:
return jsonify({'Error': 'API key invalid'}), 401
try: try:
if request.json is None: if request.json is None:
return jsonify({'Error': 'request.json is None'}) return jsonify({'Error': 'request.json is None'})
@ -1053,7 +1077,7 @@ def toggle_autoswitch():
except Exception as e: except Exception as e:
print(e) print(e)
return jsonify({'Error': 'Halp'}) return jsonify({'Error': 'Halp'})
return jsonify({'Error': 'API key invalid'}), 401
@base_api.route("/toggle_liquidate_after_switch", methods=['POST']) #type:ignore @base_api.route("/toggle_liquidate_after_switch", methods=['POST']) #type:ignore
def toggle_liquidate_after_switch(): #type:ignore def toggle_liquidate_after_switch(): #type:ignore
@ -1065,7 +1089,8 @@ def toggle_liquidate_after_switch(): #type:ignore
quote: str quote: str
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys: if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in valid_keys:
return jsonify({'Error': 'API key invalid'}), 401
try: try:
if request.json is None: if request.json is None:
return jsonify({'Error': 'request.json is None'}) return jsonify({'Error': 'request.json is None'})
@ -1076,7 +1101,7 @@ def toggle_liquidate_after_switch(): #type:ignore
except Exception as e: except Exception as e:
print(e) print(e)
return jsonify({'Error': 'Halp'}) return jsonify({'Error': 'Halp'})
return jsonify({'Error': 'API key invalid'}), 401
@base_api.route("/toggle_check_old_long_price", methods=['POST'])#type:ignore @base_api.route("/toggle_check_old_long_price", methods=['POST'])#type:ignore
def toggle_check_old_long_price(): def toggle_check_old_long_price():
@ -1088,7 +1113,8 @@ def toggle_check_old_long_price():
quote: str quote: str
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys: if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in valid_keys:
return jsonify({'Error': 'API key invalid'}), 401
try: try:
if request.json is None: if request.json is None:
return jsonify({'Error': 'request.json is None'}) return jsonify({'Error': 'request.json is None'})
@ -1099,7 +1125,7 @@ def toggle_check_old_long_price():
except Exception as e: except Exception as e:
print(e) print(e)
return jsonify({'Error': 'Halp'}) return jsonify({'Error': 'Halp'})
return jsonify({'Error': 'API key invalid'}), 401
@base_api.route("/switch_quote_currency", methods=['POST']) @base_api.route("/switch_quote_currency", methods=['POST'])
def switch_quote_currency(): def switch_quote_currency():
@ -1112,7 +1138,8 @@ def switch_quote_currency():
new_quote: str new_quote: str
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys: if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in valid_keys:
return jsonify({'Error': 'API key invalid'}), 401
try: try:
if request.json is None: if request.json is None:
return jsonify({'Error': 'request.json is None'}) return jsonify({'Error': 'request.json is None'})
@ -1124,7 +1151,7 @@ def switch_quote_currency():
except Exception as e: except Exception as e:
print(e) print(e)
return jsonify({'Error': 'Halp'}) return jsonify({'Error': 'Halp'})
return jsonify({'Error': 'API key invalid'}), 401
@base_api.route("/toggle_restart", methods=['POST']) @base_api.route("/toggle_restart", methods=['POST'])
def toggle_restart(): def toggle_restart():
@ -1135,9 +1162,10 @@ def toggle_restart():
None None
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys: if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in valid_keys:
return unwrapped_toggle_restart()
return jsonify({'Error': 'API key invalid'}), 401 return jsonify({'Error': 'API key invalid'}), 401
return unwrapped_toggle_restart()
@base_api.route("/toggle_telegram", methods=['POST']) @base_api.route("/toggle_telegram", methods=['POST'])
def toggle_telegram(): def toggle_telegram():
@ -1148,9 +1176,9 @@ def toggle_telegram():
None None
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys: if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in valid_keys:
return unwrapped_toggle_telegram()
return jsonify({'Error': 'API key invalid'}), 401 return jsonify({'Error': 'API key invalid'}), 401
return unwrapped_toggle_telegram()
@base_api.route("/server_time", methods=['GET']) @base_api.route("/server_time", methods=['GET'])
@ -1162,9 +1190,9 @@ def server_time():
None None
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys: if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in valid_keys:
return unwrapped_server_time()
return jsonify({'Error': 'API key invalid'}), 401 return jsonify({'Error': 'API key invalid'}), 401
return unwrapped_server_time()
@base_api.route("/get_log_list", methods=['GET']) @base_api.route("/get_log_list", methods=['GET'])
@ -1176,9 +1204,9 @@ def get_log_list():
coin: str coin: str
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys: if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in valid_keys:
return unwrapped_get_log_list()
return jsonify({'Error': 'API key invalid'}), 401 return jsonify({'Error': 'API key invalid'}), 401
return unwrapped_get_log_list()
@base_api.route("/get_balance", methods=['GET']) @base_api.route("/get_balance", methods=['GET'])
@ -1190,10 +1218,10 @@ def get_balance():
coin: str coin: str
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys: if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in valid_keys:
return jsonify({'Error': 'API key invalid'}), 401
coin = request.args.get("coin") coin = request.args.get("coin")
return unwrapped_get_balance(coin) return unwrapped_get_balance(coin)
return jsonify({'Error': 'API key invalid'}), 401
@base_api.route("/get_deals_cache", methods=['GET']) @base_api.route("/get_deals_cache", methods=['GET'])
@ -1205,9 +1233,9 @@ def get_deals_cache():
None None
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys: if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in valid_keys:
return unwrapped_get_deals_cache()
return jsonify({'Error': 'API key invalid'}), 401 return jsonify({'Error': 'API key invalid'}), 401
return unwrapped_get_deals_cache()
@base_api.route("/trader_time", methods=['GET']) @base_api.route("/trader_time", methods=['GET'])
@ -1219,9 +1247,10 @@ def trader_time():
None None
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys: if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in valid_keys:
return unwrapped_trader_time()
return jsonify({'Error': 'API key invalid'}), 401 return jsonify({'Error': 'API key invalid'}), 401
return unwrapped_trader_time()
@base_api.route("/edit_loop_wait_time", methods=['POST']) @base_api.route("/edit_loop_wait_time", methods=['POST'])
def loop_wait_time(): def loop_wait_time():
@ -1232,7 +1261,8 @@ def loop_wait_time():
wait_time: float wait_time: float
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys: if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in valid_keys:
return jsonify({'Error': 'API key invalid'}), 401
try: try:
if request.json is None: if request.json is None:
return jsonify({'Error': 'request.json is None'}) return jsonify({'Error': 'request.json is None'})
@ -1242,8 +1272,6 @@ def loop_wait_time():
except Exception as e: except Exception as e:
print(e) print(e)
return jsonify({'Error': 'Halp'}) return jsonify({'Error': 'Halp'})
return jsonify({'Error': 'API key invalid'}), 401
@base_api.route("/edit_call_wait_time", methods=['POST']) @base_api.route("/edit_call_wait_time", methods=['POST'])
@ -1255,7 +1283,8 @@ def call_wait_time():
wait_time: float wait_time: float
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys: if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in valid_keys:
return jsonify({'Error': 'API key invalid'}), 401
try: try:
if request.json is None: if request.json is None:
return jsonify({'Error': 'request.json is None'}) return jsonify({'Error': 'request.json is None'})
@ -1265,7 +1294,6 @@ def call_wait_time():
except Exception as e: except Exception as e:
print(e) print(e)
return jsonify({'Error': 'Halp'}) return jsonify({'Error': 'Halp'})
return jsonify({'Error': 'API key invalid'}), 401
@base_api.route("/edit_cooldown_multiplier", methods=['POST']) @base_api.route("/edit_cooldown_multiplier", methods=['POST'])
@ -1277,7 +1305,8 @@ def edit_cooldown_multiplier():
cooldown_multiplier: float cooldown_multiplier: float
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys: if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in valid_keys:
return jsonify({'Error': 'API key invalid'}), 401
try: try:
if request.json is None: if request.json is None:
return jsonify({'Error': 'request.json is None'}) return jsonify({'Error': 'request.json is None'})
@ -1287,7 +1316,6 @@ def edit_cooldown_multiplier():
except Exception as e: except Exception as e:
print(e) print(e)
return jsonify({'Error': 'Halp'}) return jsonify({'Error': 'Halp'})
return jsonify({'Error': 'API key invalid'}), 401
@base_api.route("/reload_markets", methods=['POST']) @base_api.route("/reload_markets", methods=['POST'])
@ -1300,10 +1328,10 @@ def reload_markets():
quote: str quote: str
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys: if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in valid_keys:
return jsonify({'Error': 'API key invalid'}), 401
return unwrapped_reload_markets() return unwrapped_reload_markets()
return jsonify({'Error': 'API key invalid'}), 401
@base_api.route("/reload_safety_order", methods=['POST']) @base_api.route("/reload_safety_order", methods=['POST'])
def reload_safety_order(): def reload_safety_order():
@ -1314,7 +1342,8 @@ def reload_safety_order():
None None
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys: if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in valid_keys:
return jsonify({'Error': 'API key invalid'}), 401
try: try:
if request.json is None: if request.json is None:
return jsonify({'Error': 'request.json is None'}) return jsonify({'Error': 'request.json is None'})
@ -1325,7 +1354,6 @@ def reload_safety_order():
except Exception as e: except Exception as e:
print(e) print(e)
return jsonify({'Error': 'Halp'}) return jsonify({'Error': 'Halp'})
return jsonify({'Error': 'API key invalid'}), 401
@base_api.route("/reload_trader_config", methods=['POST'])#type:ignore @base_api.route("/reload_trader_config", methods=['POST'])#type:ignore
@ -1338,7 +1366,8 @@ def reload_trader_config():
quote: str quote: str
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys: if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in valid_keys:
return jsonify({'Error': 'API key invalid'}), 401
try: try:
if request.json is None: if request.json is None:
return jsonify({'Error': 'request.json is None'}) return jsonify({'Error': 'request.json is None'})
@ -1349,7 +1378,6 @@ def reload_trader_config():
except Exception as e: except Exception as e:
print(e) print(e)
return jsonify({'Error': 'Halp'}) return jsonify({'Error': 'Halp'})
return jsonify({'Error': 'API key invalid'}), 401
def run_API(): def run_API():
@ -1367,7 +1395,6 @@ def unwrapped_global_status():
''' '''
return jsonify(global_status) return jsonify(global_status)
def unwrapped_paused_traders(): def unwrapped_paused_traders():
''' '''
Returns the paused_traders field from the global status dictionary of the instance. Returns the paused_traders field from the global status dictionary of the instance.
@ -1375,7 +1402,6 @@ def unwrapped_paused_traders():
return jsonify(global_status["paused_traders"]) return jsonify(global_status["paused_traders"])
def unwrapped_return_worker_status(base,quote): def unwrapped_return_worker_status(base,quote):
''' '''
Returns the individual status dictionary of the trader. Returns the individual status dictionary of the trader.

View File

@ -5,9 +5,10 @@ import calendar
import logging import logging
import threading import threading
import os import os
import functools from collections import deque
from typing import Iterable, List, Tuple
from contextlib import contextmanager from contextlib import contextmanager
from flask import Flask, jsonify, request from flask import Flask, jsonify, request, Response
from waitress import serve from waitress import serve
@ -225,15 +226,6 @@ def daily_and_monthly_totals() -> tuple[float, float]:
row = cur.fetchone() row = cur.fetchone()
daily_total = float(row["daily_total"]) daily_total = float(row["daily_total"])
monthly_total = float(row["monthly_total"]) monthly_total = float(row["monthly_total"])
# query = """SELECT * FROM profits_table
# WHERE timestamp >= ?
# ORDER BY timestamp DESC;"""
# with db_cursor() as cursor:
# cursor.execute(query, (start_of_month_unix,))
# query_result = cursor.fetchall()
# monthly_total = sum([item[2] for item in query_result])
# daily_total = sum([item[2] for item in query_result if item[0]>=start_of_day_unix])
return (daily_total, monthly_total) return (daily_total, monthly_total)
@ -378,13 +370,14 @@ def fetch_profit_report():
Returns: JSON object with profit report data Returns: JSON object with profit report data
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in get_valid_keys(): if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in get_valid_keys():
return jsonify({'Error': 'API key invalid'}), 401
try: try:
return jsonify(profit_report()) return jsonify(profit_report())
except Exception as e: except Exception as e:
print(e) print(e)
return jsonify({"Error": f"{e}"}) return jsonify({"Error": f"{e}"})
return jsonify({'Error': 'API key invalid'}), 401
@stats_api.route("/fetch_last_n_deals") @stats_api.route("/fetch_last_n_deals")
@ -393,7 +386,8 @@ def fetch_last_n_deals():
GET request GET request
Parameter: 'amount_of_deals' -> int Parameter: 'amount_of_deals' -> int
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in get_valid_keys(): if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in get_valid_keys():
return jsonify({'Error': 'API key invalid'}), 401
try: try:
parameter = request.args.get("amount_of_deals") parameter = request.args.get("amount_of_deals")
response_value = last_n_deals(parameter) response_value = last_n_deals(parameter)
@ -401,7 +395,6 @@ def fetch_last_n_deals():
except Exception as e: except Exception as e:
print(e) print(e)
return jsonify({"last_deals":""}) return jsonify({"last_deals":""})
return jsonify({'Error': 'API key invalid'}), 401
@stats_api.route("/fetch_last_n_deals_without_history") @stats_api.route("/fetch_last_n_deals_without_history")
@ -410,7 +403,8 @@ def fetch_last_n_deals_without_history():
GET request GET request
Parameter: 'amount_of_deals' -> int Parameter: 'amount_of_deals' -> int
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in get_valid_keys(): if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in get_valid_keys():
return jsonify({'Error': 'API key invalid'}), 401
try: try:
parameter = request.args.get("amount_of_deals") parameter = request.args.get("amount_of_deals")
#return jsonify({"last_deals": last_n_deals_without_history(parameter)}) #return jsonify({"last_deals": last_n_deals_without_history(parameter)})
@ -419,7 +413,6 @@ def fetch_last_n_deals_without_history():
except Exception as e: except Exception as e:
print(e) print(e)
return jsonify({"last_deals":""}) return jsonify({"last_deals":""})
return jsonify({'Error': 'API key invalid'}), 401
@stats_api.route("/fetch_full_log") @stats_api.route("/fetch_full_log")
@ -430,17 +423,16 @@ def fetch_full_log():
It trims the full log to 200 lines, to avoid sending too much data to the client. It trims the full log to 200 lines, to avoid sending too much data to the client.
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in get_valid_keys(): if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in get_valid_keys():
return jsonify({'Error': 'API key invalid'}), 401
try: try:
exchange_name = request.args.get("exchange_name") exchange_name = request.args.get("exchange_name")
width = 0 width = 0
#last_lines,amount_of_lines = last_n_lines(f"../logs/{exchange_name}.log",width,0,full_log=True)
last_lines, amount_of_lines = tail_log(f"../logs/{exchange_name}.log", 200) last_lines, amount_of_lines = tail_log(f"../logs/{exchange_name}.log", 200)
return jsonify({"line": last_lines[-200:], "amount_of_lines": amount_of_lines}) return jsonify({"line": last_lines[-200:], "amount_of_lines": amount_of_lines})
except Exception as e: except Exception as e:
print(e) print(e)
return {"line": [""]*width,"amount_of_lines": 0} return {"line": [""]*width,"amount_of_lines": 0}
return jsonify({'Error': 'API key invalid'}), 401
@stats_api.route("/fetch_log") @stats_api.route("/fetch_log")
@ -451,7 +443,8 @@ def fetch_log():
'width' -> int 'width' -> int
'amount' -> int 'amount' -> int
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in get_valid_keys(): if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in get_valid_keys():
return jsonify({'Error': 'API key invalid'}), 401
try: try:
exchange_name = request.args.get("exchange_name") exchange_name = request.args.get("exchange_name")
width = int(request.args.get("width")) # type: ignore width = int(request.args.get("width")) # type: ignore
@ -461,23 +454,22 @@ def fetch_log():
except Exception as e: except Exception as e:
print(e) print(e)
return {"line": [""]*10,"amount_of_lines": 0} return {"line": [""]*10,"amount_of_lines": 0}
return jsonify({'Error': 'API key invalid'}), 401
@stats_api.route("/combined_totals") @stats_api.route("/combined_totals")
def combined_totals(): def combined_totals():
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in get_valid_keys(): if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in get_valid_keys():
return jsonify({'Error': 'API key invalid'}), 401
daily_totals = daily_and_monthly_totals() daily_totals = daily_and_monthly_totals()
return jsonify({"combined": daily_totals}) return jsonify({"combined": daily_totals})
return jsonify({'Error': 'API key invalid'}), 401
@stats_api.route("/daily_totals") @stats_api.route("/daily_totals")
def get_daily_totals(): def get_daily_totals():
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in get_valid_keys(): if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in get_valid_keys():
return jsonify({'Error': 'API key invalid'}), 401
daily_totals = query_daily_totals() daily_totals = query_daily_totals()
return jsonify(daily_totals) return jsonify(daily_totals)
return jsonify({'Error': 'API key invalid'}), 401
@stats_api.route("/daily_totals_by_pair") @stats_api.route("/daily_totals_by_pair")
@ -487,7 +479,8 @@ def get_daily_totals_by_pair():
Parameters: 'base' -> string Parameters: 'base' -> string
'quote' -> string 'quote' -> string
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in get_valid_keys(): if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in get_valid_keys():
return jsonify({'Error': 'API key invalid'}), 401
try: try:
base = request.args.get("base") base = request.args.get("base")
quote = request.args.get("quote") quote = request.args.get("quote")
@ -496,15 +489,14 @@ def get_daily_totals_by_pair():
except Exception as e: except Exception as e:
print(e) print(e)
return jsonify({'Error': 'Halp'}) return jsonify({'Error': 'Halp'})
return jsonify({'Error': 'API key invalid'}), 401
@stats_api.route("/monthly_totals") @stats_api.route("/monthly_totals")
def get_monthly_totals(): def get_monthly_totals():
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in get_valid_keys(): if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in get_valid_keys():
return jsonify({'Error': 'API key invalid'}), 401
monthly_totals = query_monthly_totals() monthly_totals = query_monthly_totals()
return jsonify(monthly_totals) return jsonify(monthly_totals)
return jsonify({'Error': 'API key invalid'}), 401
@stats_api.route("/monthly_totals_by_pair") @stats_api.route("/monthly_totals_by_pair")
@ -514,7 +506,8 @@ def get_monthly_totals_by_pair():
Parameters: 'base' -> string Parameters: 'base' -> string
'quote' -> string 'quote' -> string
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in get_valid_keys(): if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in get_valid_keys():
return jsonify({'Error': 'API key invalid'}), 401
try: try:
base = request.args.get("base") base = request.args.get("base")
quote = request.args.get("quote") quote = request.args.get("quote")
@ -523,27 +516,19 @@ def get_monthly_totals_by_pair():
except Exception as e: except Exception as e:
print(e) print(e)
return jsonify({'Error': 'Halp'}) return jsonify({'Error': 'Halp'})
return jsonify({'Error': 'API key invalid'}), 401
@stats_api.route("/get_averages") @stats_api.route("/get_averages")
def get_averages(): def get_averages():
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in get_valid_keys(): if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in get_valid_keys():
return jsonify({'Error': 'API key invalid'}), 401
try: try:
daily_totals = query_daily_totals() daily_totals = query_daily_totals()
val_30 = 0 val_30 = 0
val_7 = 0 val_7 = 0
#acc_30 = []
#acc_7 = []
#for x in sorted(daily_totals):
# acc_30.append(daily_totals[x])
# acc_7.append(daily_totals[x])
recent_days = sorted(daily_totals.keys(), reverse=True)[:30] recent_days = sorted(daily_totals.keys(), reverse=True)[:30]
acc_30 = [daily_totals[date] for date in recent_days[:30]] acc_30 = [daily_totals[date] for date in recent_days[:30]]
acc_7 = [daily_totals[date] for date in recent_days[:7]] acc_7 = [daily_totals[date] for date in recent_days[:7]]
length_30 = min(30,len(acc_30)) #Last 30 days length_30 = min(30,len(acc_30)) #Last 30 days
length_7 = min(7,len(acc_7)) #Last 7 days length_7 = min(7,len(acc_7)) #Last 7 days
for _ in range(length_30): for _ in range(length_30):
@ -554,15 +539,14 @@ def get_averages():
except Exception as e: except Exception as e:
print(e) print(e)
return jsonify({'Error': 'Halp'}) return jsonify({'Error': 'Halp'})
return jsonify({'Error': 'API key invalid'}), 401
@stats_api.route("/total_profit") @stats_api.route("/total_profit")
def total_profit(): def total_profit():
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in get_valid_keys(): if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in get_valid_keys():
return jsonify({'Error': 'API key invalid'}), 401
total = query_total_profit() total = query_total_profit()
return jsonify({"Total profit": total}) return jsonify({"Total profit": total})
return jsonify({'Error': 'API key invalid'}), 401
@stats_api.route("/total_profit_by_pair") @stats_api.route("/total_profit_by_pair")
@ -572,7 +556,8 @@ def total_profit_by_pair():
Parameters: 'base' -> string Parameters: 'base' -> string
'quote' -> string 'quote' -> string
''' '''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in get_valid_keys(): if not "X-API-KEY" in request.headers or not request.headers.get("X-API-KEY") in get_valid_keys():
return jsonify({'Error': 'API key invalid'}), 401
try: try:
base = request.args.get("base") base = request.args.get("base")
quote = request.args.get("quote") quote = request.args.get("quote")
@ -581,13 +566,10 @@ def total_profit_by_pair():
except Exception as e: except Exception as e:
print(e) print(e)
return jsonify({'Error': 'Halp'}) return jsonify({'Error': 'Halp'})
return jsonify({'Error': 'API key invalid'}), 401
if __name__=="__main__": if __name__=="__main__":
# Load valid keys from database
#valid_keys = load_keys_from_db("api_credentials.db")
#Waitress #Waitress
logger = logging.getLogger('waitress') logger = logging.getLogger('waitress')