Spaces:
Running
Running
import os | |
import base64 | |
import json | |
from firebase_admin import credentials, initialize_app, storage | |
from dotenv import load_dotenv | |
load_dotenv() | |
_firebase_app = None | |
_firebase_bucket = None | |
def initialize_firebase(): | |
global _firebase_app, _firebase_bucket | |
if _firebase_app is not None: | |
return _firebase_bucket | |
firebase_key_base64 = os.getenv('FIREBASE_KEY_BASE64') | |
if not firebase_key_base64: | |
raise ValueError("Environment variable FIREBASE_KEY_BASE64 is not set or is empty") | |
try: | |
print("Decoding Firebase key...") | |
firebase_key_json = base64.b64decode(firebase_key_base64).decode('utf-8') | |
firebase_key_dict = json.loads(firebase_key_json) | |
print("Initializing Firebase...") | |
cred = credentials.Certificate(firebase_key_dict) | |
# Initialize Firebase with a unique name if needed | |
_firebase_app = initialize_app(cred, { | |
'storageBucket': os.getenv('FIREBASE_STORAGE_BUCKET') | |
}) | |
_firebase_bucket = storage.bucket(app=_firebase_app) | |
print("Firebase initialized successfully.") | |
return _firebase_bucket | |
except Exception as e: | |
raise RuntimeError(f"Error initializing Firebase: {e}") | |
firebase_bucket = initialize_firebase() | |