firebase_rs_sdk/app/
namespace.rs

1use crate::app::api;
2use crate::app::errors::AppResult;
3use crate::app::logger::{LogCallback, LogLevel, LogOptions};
4use crate::app::types::{FirebaseApp, FirebaseAppSettings, FirebaseOptions};
5use crate::auth::error::{AuthError, AuthResult};
6use crate::auth::{self, Auth};
7use std::sync::Arc;
8
9pub struct FirebaseNamespace;
10
11impl FirebaseNamespace {
12    /// Public entry point mirroring the JS `initializeApp` helper.
13    pub fn initialize_app(
14        options: FirebaseOptions,
15        settings: Option<FirebaseAppSettings>,
16    ) -> AppResult<FirebaseApp> {
17        api::initialize_app(options, settings)
18    }
19
20    /// Returns an initialized `FirebaseApp` by name or the default app when `None` is provided.
21    pub fn app(name: Option<&str>) -> AppResult<FirebaseApp> {
22        api::get_app(name)
23    }
24
25    /// Lists all apps that have been initialized in the current process.
26    pub fn apps() -> Vec<FirebaseApp> {
27        api::get_apps()
28    }
29
30    /// Registers an additional library version for platform logging.
31    pub fn register_version(library: &str, version: &str, variant: Option<&str>) {
32        api::register_version(library, version, variant)
33    }
34
35    /// Updates the global log verbosity for Firebase.
36    pub fn set_log_level(level: LogLevel) {
37        api::set_log_level(level)
38    }
39
40    /// Installs or clears a user-provided log callback.
41    pub fn on_log(callback: Option<LogCallback>, options: Option<LogOptions>) -> AppResult<()> {
42        api::on_log(callback, options)
43    }
44
45    /// Exposes the Firebase SDK version bundled in this crate.
46    pub fn sdk_version() -> &'static str {
47        api::SDK_VERSION
48    }
49
50    /// Provides access to the Auth service for the given (or default) app.
51    pub fn auth(app: Option<FirebaseApp>) -> AuthResult<Arc<Auth>> {
52        auth::api::register_auth_component();
53        let app = match app {
54            Some(app) => app,
55            None => api::get_app(None).map_err(AuthError::from)?,
56        };
57        auth::api::auth_for_app(app)
58    }
59}