Source code for firebase


#   Copyright (c) 2022 Asif Arman Rahman
#   Licensed under MIT (https://github.com/AsifArmanRahman/firebase/blob/main/LICENSE)

# --------------------------------------------------------------------------------------


"""A simple python wrapper for Google's `Firebase`_ REST APIs.

.. _Firebase: https://firebase.google.com/
"""

from .auth import Auth
from .storage import Storage
from .database import Database
from ._custom_requests import _custom_request
from ._service_account_credentials import _service_account_creds_from_secret


[docs]def initialize_app(config): """Initializes and returns a new Firebase instance. :type config: dict :param config: Firebase configuration :return: A newly initialized instance of Firebase. :rtype: Firebase """ return Firebase(config)
[docs]class Firebase: """ Firebase Interface :type config: dict :param config: Firebase configuration """ def __init__(self, config): """ Constructor """ self.api_key = config["apiKey"] self.auth_domain = config["authDomain"] self.database_url = config["databaseURL"] self.storage_bucket = config["storageBucket"] self.credentials = None self.requests = _custom_request() if config.get("serviceAccount"): self.credentials = _service_account_creds_from_secret(config['serviceAccount'])
[docs] def auth(self, client_secret=None): """Initializes and returns a new Firebase Authentication instance. :type client_secret: str or dict :param client_secret: (Optional) File path to or the dict object from social client secret file, defaults to :data:`None`. :return: A newly initialized instance of Auth. :rtype: Auth """ return Auth(self.api_key, self.credentials, self.requests, client_secret=client_secret)
[docs] def database(self): """Initializes and returns a new Firebase Realtime Database instance. :return: A newly initialized instance of Database. :rtype: Database """ return Database(self.credentials, self.database_url, self.requests)
[docs] def storage(self): """Initializes and returns a new Firebase Storage instance. :return: A newly initialized instance of Storage. :rtype: Storage """ return Storage(self.credentials, self.requests, self.storage_bucket)