Spaces:
Running
Running
import base64 | |
import json | |
import os | |
import firebase_admin | |
from firebase_admin import db | |
from dotenv import load_dotenv | |
load_dotenv() | |
def decode_service_key(): | |
encoded_key = os.environ["FIREBASE_CREDENTIALS"] | |
original_service_key = json.loads(base64.b64decode(encoded_key).decode('utf-8')) | |
if original_service_key: | |
return original_service_key | |
return None | |
# Firebase initialization | |
def initialize_firebase(): | |
try: | |
# Try to initialize Firebase app if not already initialized | |
firebase_admin.get_app() | |
except ValueError: | |
creds_file_name = '.config/user-evaluations-firebase-creds.json' | |
if not (os.path.exists(creds_file_name) and os.path.isdir(creds_file_name)): | |
credentials = decode_service_key() | |
with open(creds_file_name, 'w', encoding='utf-8') as file: | |
json.dump(credentials, file, ensure_ascii=False, indent=4) | |
# If not initialized, initialize the default app | |
cred_obj = firebase_admin.credentials.Certificate(creds_file_name) | |
database_URL = os.environ["FIREBASE_DATABASE_URL"] | |
firebase_admin.initialize_app(cred_obj, {'databaseURL': database_URL}) | |
def db_setup(): | |
try: | |
initialize_firebase() | |
except Exception as e: | |
print(f"Error initializing Firebase: {e}") | |
firebase_admin.get_app() | |
ref = db.reference('/') | |
return ref | |