Spaces:
Sleeping
Sleeping
import json | |
import os | |
import ccxt | |
import openai | |
SESSION_FILE = ".session.json" | |
class SessionManager: | |
def __init__(self): | |
self.openai_key = None | |
self.kucoin_key = None | |
self.kucoin_secret = None | |
self.kucoin_passphrase = None | |
self.provider = "OpenAI" | |
self.hf_token = None | |
self._load() | |
def _load(self): | |
if os.path.exists(SESSION_FILE): | |
with open(SESSION_FILE, "r") as f: | |
data = json.load(f) | |
self.__dict__.update(data) | |
def set_keys( | |
self, openai_key, kucoin_key, kucoin_secret, kucoin_pass, provider, hf_token | |
): | |
self.openai_key = openai_key | |
self.kucoin_key = kucoin_key | |
self.kucoin_secret = kucoin_secret | |
self.kucoin_passphrase = kucoin_pass | |
self.provider = provider | |
self.hf_token = hf_token | |
with open(SESSION_FILE, "w") as f: | |
json.dump(self.__dict__, f) | |
def clear(self): | |
if os.path.exists(SESSION_FILE): | |
os.remove(SESSION_FILE) | |
self.__init__() | |
def is_ready(self): | |
return all([self.kucoin_key, self.kucoin_secret, self.kucoin_passphrase]) and ( | |
self.openai_key if self.provider == "OpenAI" else self.hf_token | |
) | |
def validate_all_keys(session: SessionManager): | |
try: | |
kucoin = ccxt.kucoinfutures( | |
{ | |
"apiKey": session.kucoin_key, | |
"secret": session.kucoin_secret, | |
"password": session.kucoin_passphrase, | |
} | |
) | |
_ = kucoin.fetch_balance() | |
except Exception as e: | |
return False, f"β KuCoin error: {e}" | |
if session.provider == "OpenAI": | |
try: | |
openai.api_key = session.openai_key | |
_ = openai.models.list() | |
except Exception as e: | |
return False, f"β OpenAI error: {e}" | |
return True, "β API keys valid and ready" | |