diff --git a/.env.example b/.env.example index b13ecfa..ed7f9ea 100644 --- a/.env.example +++ b/.env.example @@ -1 +1,7 @@ -FIREBASE_STORAGE_BUCKET="" # Firebase storage bucket of your Ruxailab project \ No newline at end of file +FIREBASE_STORAGE_BUCKET="" # Firebase storage bucket of your Ruxailab project + +FIREBASE_EMULATOR_HOST=localhost +STORAGE_EMULATOR_PORT= +FIRESTORE_EMULATOR_PORT= +FIREBASE_PROJECT_ID= +USE_EMULATORS=false #true if running firebase emulators \ No newline at end of file diff --git a/services/data/firebase_imp.py b/services/data/firebase_imp.py index da8ca94..2a7a315 100644 --- a/services/data/firebase_imp.py +++ b/services/data/firebase_imp.py @@ -1,8 +1,9 @@ +import os import firebase_admin import logging import coloredlogs -from firebase_admin import firestore, storage +from firebase_admin import firestore, storage, credentials from services.data.firebase_service import FirebaseService @@ -24,11 +25,29 @@ def __init__(self, storage_bucket: str): self.storage_client = storage.bucket() def _initialize_app(self): + if os.getenv('USE_EMULATORS', '').lower() == 'true': + + emulator_host = os.getenv('FIREBASE_EMULATOR_HOST', 'localhost') + storage_port = os.getenv('STORAGE_EMULATOR_PORT', '9199') + firestore_port = os.getenv('FIRESTORE_EMULATOR_PORT', '8080') + + os.environ['STORAGE_EMULATOR_HOST'] = f"http://{emulator_host}:{storage_port}" + os.environ['FIRESTORE_EMULATOR_HOST'] = f"{emulator_host}:{firestore_port}" + + options = { + "storageBucket": self.storage_bucket, + "projectId": os.getenv('FIREBASE_PROJECT_ID') + } + + else: + + options = { + "storageBucket": self.storage_bucket + } + if not firebase_admin._apps: firebase_admin.initialize_app( - options={ - "storageBucket": self.storage_bucket - } + options=options ) def download_video_from_storage(self, video_name: str):