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

View File

@ -5,9 +5,10 @@ import calendar
import logging
import threading
import os
import functools
from collections import deque
from typing import Iterable, List, Tuple
from contextlib import contextmanager
from flask import Flask, jsonify, request
from flask import Flask, jsonify, request, Response
from waitress import serve
@ -225,15 +226,6 @@ def daily_and_monthly_totals() -> tuple[float, float]:
row = cur.fetchone()
daily_total = float(row["daily_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)
@ -378,13 +370,14 @@ def fetch_profit_report():
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:
return jsonify(profit_report())
except Exception as e:
print(e)
return jsonify({"Error": f"{e}"})
return jsonify({'Error': 'API key invalid'}), 401
@stats_api.route("/fetch_last_n_deals")
@ -393,7 +386,8 @@ def fetch_last_n_deals():
GET request
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:
parameter = request.args.get("amount_of_deals")
response_value = last_n_deals(parameter)
@ -401,7 +395,6 @@ def fetch_last_n_deals():
except Exception as e:
print(e)
return jsonify({"last_deals":""})
return jsonify({'Error': 'API key invalid'}), 401
@stats_api.route("/fetch_last_n_deals_without_history")
@ -410,7 +403,8 @@ def fetch_last_n_deals_without_history():
GET request
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:
parameter = request.args.get("amount_of_deals")
#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:
print(e)
return jsonify({"last_deals":""})
return jsonify({'Error': 'API key invalid'}), 401
@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.
'''
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:
exchange_name = request.args.get("exchange_name")
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)
return jsonify({"line": last_lines[-200:], "amount_of_lines": amount_of_lines})
except Exception as e:
print(e)
return {"line": [""]*width,"amount_of_lines": 0}
return jsonify({'Error': 'API key invalid'}), 401
@stats_api.route("/fetch_log")
@ -451,7 +443,8 @@ def fetch_log():
'width' -> 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:
exchange_name = request.args.get("exchange_name")
width = int(request.args.get("width")) # type: ignore
@ -461,23 +454,22 @@ def fetch_log():
except Exception as e:
print(e)
return {"line": [""]*10,"amount_of_lines": 0}
return jsonify({'Error': 'API key invalid'}), 401
@stats_api.route("/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()
return jsonify({"combined": daily_totals})
return jsonify({'Error': 'API key invalid'}), 401
@stats_api.route("/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()
return jsonify(daily_totals)
return jsonify({'Error': 'API key invalid'}), 401
@stats_api.route("/daily_totals_by_pair")
@ -487,7 +479,8 @@ def get_daily_totals_by_pair():
Parameters: 'base' -> 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:
base = request.args.get("base")
quote = request.args.get("quote")
@ -496,15 +489,14 @@ def get_daily_totals_by_pair():
except Exception as e:
print(e)
return jsonify({'Error': 'Halp'})
return jsonify({'Error': 'API key invalid'}), 401
@stats_api.route("/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()
return jsonify(monthly_totals)
return jsonify({'Error': 'API key invalid'}), 401
@stats_api.route("/monthly_totals_by_pair")
@ -514,7 +506,8 @@ def get_monthly_totals_by_pair():
Parameters: 'base' -> 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:
base = request.args.get("base")
quote = request.args.get("quote")
@ -523,27 +516,19 @@ def get_monthly_totals_by_pair():
except Exception as e:
print(e)
return jsonify({'Error': 'Halp'})
return jsonify({'Error': 'API key invalid'}), 401
@stats_api.route("/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:
daily_totals = query_daily_totals()
val_30 = 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]
acc_30 = [daily_totals[date] for date in recent_days[:30]]
acc_7 = [daily_totals[date] for date in recent_days[:7]]
length_30 = min(30,len(acc_30)) #Last 30 days
length_7 = min(7,len(acc_7)) #Last 7 days
for _ in range(length_30):
@ -554,15 +539,14 @@ def get_averages():
except Exception as e:
print(e)
return jsonify({'Error': 'Halp'})
return jsonify({'Error': 'API key invalid'}), 401
@stats_api.route("/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()
return jsonify({"Total profit": total})
return jsonify({'Error': 'API key invalid'}), 401
@stats_api.route("/total_profit_by_pair")
@ -572,7 +556,8 @@ def total_profit_by_pair():
Parameters: 'base' -> 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:
base = request.args.get("base")
quote = request.args.get("quote")
@ -581,13 +566,10 @@ def total_profit_by_pair():
except Exception as e:
print(e)
return jsonify({'Error': 'Halp'})
return jsonify({'Error': 'API key invalid'}), 401
if __name__=="__main__":
# Load valid keys from database
#valid_keys = load_keys_from_db("api_credentials.db")
#Waitress
logger = logging.getLogger('waitress')