| import json | |
| import os | |
| from google.oauth2 import service_account | |
| from google.cloud import storage | |
| from google import genai | |
| from storage_service import GoogleCloudStorage | |
| def initialize_google_credentials(): | |
| is_env_local = os.getenv("IS_ENV_LOCAL", "false") == "true" | |
| print(f"Environment is local: {is_env_local}") | |
| try: | |
| if is_env_local: | |
| config_path = os.path.join(os.path.dirname(__file__), "local_config.json") | |
| print(f"Trying to load config from: {config_path}") | |
| if not os.path.exists(config_path): | |
| print(f"Warning: {config_path} does not exist") | |
| return None | |
| with open(config_path) as f: | |
| config = json.load(f) | |
| google_credentials_key = json.dumps(config["GOOGLE_APPLICATION_CREDENTIALS_JSON"]) | |
| else: | |
| google_credentials_key = os.getenv("GOOGLE_APPLICATION_CREDENTIALS_JSON") | |
| if not google_credentials_key: | |
| print("Warning: GOOGLE_APPLICATION_CREDENTIALS_JSON environment variable not set") | |
| return google_credentials_key | |
| except Exception as e: | |
| print(f"Error initializing credentials: {str(e)}") | |
| return None | |
| def initialize_gcs_service(google_credentials_key): | |
| if not google_credentials_key: | |
| print("Warning: No credentials provided, GCS service will not be initialized") | |
| return None | |
| return GoogleCloudStorage(google_credentials_key) | |
| def initialize_genai_client(google_credentials_key): | |
| try: | |
| if not google_credentials_key: | |
| print("Warning: No credentials provided, using default authentication") | |
| return genai.Client( | |
| vertexai=True, | |
| project='junyiacademy', | |
| location='us-central1' | |
| ) | |
| google_service_account_info_dict = json.loads(google_credentials_key) | |
| GOOGPE_SCOPES = ["https://www.googleapis.com/auth/cloud-platform"] | |
| credentials = service_account.Credentials.from_service_account_info( | |
| google_service_account_info_dict, scopes=GOOGPE_SCOPES | |
| ) | |
| return genai.Client( | |
| vertexai=True, | |
| project='junyiacademy', | |
| location='us-central1', | |
| credentials=credentials | |
| ) | |
| except Exception as e: | |
| print(f"Error initializing GenAI client: {str(e)}") | |
| print("Falling back to default authentication") | |
| return genai.Client( | |
| vertexai=True, | |
| project='junyiacademy', | |
| location='us-central1' | |
| ) | |
| def initialize_password(): | |
| is_env_local = os.getenv("IS_ENV_LOCAL", "false") == "true" | |
| print(f"Environment is local: {is_env_local}") | |
| try: | |
| if is_env_local: | |
| config_path = os.path.join(os.path.dirname(__file__), "local_config.json") | |
| print(f"Trying to load config from: {config_path}") | |
| if not os.path.exists(config_path): | |
| print(f"Warning: {config_path} does not exist") | |
| return None | |
| with open(config_path) as f: | |
| config = json.load(f) | |
| return config["PASSWORD"] | |
| else: | |
| return os.getenv("PASSWORD") | |
| except Exception as e: | |
| print(f"Error initializing password: {str(e)}") | |
| return None | |
| def initialize_clients(): | |
| google_credentials_key = initialize_google_credentials() | |
| gcs_service = initialize_gcs_service(google_credentials_key) | |
| genai_client = initialize_genai_client(google_credentials_key) | |
| return gcs_service, genai_client | |