File size: 1,938 Bytes
149a034
 
a357b18
149a034
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a357b18
 
 
149a034
 
 
 
 
a357b18
149a034
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a357b18
 
 
 
 
 
 
 
149a034
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
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"