File size: 2,251 Bytes
6a71c2b
 
2eebdb5
6a71c2b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import os
import json
from utils import log

class ServiceConfig:
    def __init__(self, config_path="service_config.json"):
        self.config_path = config_path
        self.work_mode = None
        self.cloud_token = None
        self.system_prompt = None
        self.spark_endpoint = None
        self.users = []
        self.last_version_number = 0
        self.projects = {}
        self.apis = {}

    def load(self):
        try:
            log(f"πŸ“₯ Loading service config from {self.config_path}...")
            with open(self.config_path, "r", encoding="utf-8") as f:
                config_data = json.load(f)

            general = config_data.get("config", {})
            self.work_mode = general.get("work_mode")
            self.cloud_token = general.get("cloud_token")
            self.system_prompt = general.get("system_prompt")
            self.spark_endpoint = general.get("spark_endpoint")
            self.last_version_number = general.get("last_version_number", 0)
            self.users = general.get("users", [])

            self.apis = config_data.get("apis", {})

            projects_data = config_data.get("projects", {})
            for project_name, project_info in projects_data.items():
                project = {
                    "project_name": project_info.get("project_name"),
                    "enabled": project_info.get("enabled", False),
                    "versions": project_info.get("versions", [])
                }
                self.projects[project_name] = project

            log("βœ… Service config loaded successfully.")

        except Exception as e:
            log(f"❌ Error loading service config: {e}")
            raise

    def get_project(self, project_name):
        return self.projects.get(project_name)

    def get_project_versions(self, project_name):
        project = self.get_project(project_name)
        return project.get("versions") if project else []

    def get_api_config(self, api_name):
        return self.apis.get(api_name)

    def get_auth_token(self):
        if self.work_mode == "hfcloud":
            return os.getenv("HF_TOKEN")
        elif self.work_mode == "cloud":
            return self.cloud_token
        else:
            return None