File size: 1,301 Bytes
6064a78
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
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()