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" | |