statsig-rust 0.19.1-beta.2604130314

Statsig Rust SDK for usage in multi-user server environments.
Documentation
use std::sync::Arc;

use async_trait::async_trait;

use crate::{
    console_capture::console_capture_handler::ConsoleCaptureHandler,
    observability::ops_stats::OpsStatsEvent, user::StatsigUserLoggable, OpsStatsEventObserver,
};

#[derive(Clone)]
pub struct ConsoleCaptureEvent {
    pub level: String,
    pub payload: Vec<String>,
    pub timestamp: u64,
    pub user: StatsigUserLoggable,

    pub stack_trace: Option<String>,
}
pub struct ConsoleCaptureObserver {
    console_capture_handler: Arc<ConsoleCaptureHandler>,
}

impl ConsoleCaptureObserver {
    pub fn new(console_capture_handler: Arc<ConsoleCaptureHandler>) -> Self {
        Self {
            console_capture_handler,
        }
    }

    async fn handle_console_capture_event(&self, event: ConsoleCaptureEvent) {
        self.console_capture_handler
            .handle_console_capture_event(event);
    }
}

#[async_trait]
impl OpsStatsEventObserver for ConsoleCaptureObserver {
    async fn handle_event(&self, event: OpsStatsEvent) {
        if let OpsStatsEvent::ConsoleCapture(e) = event {
            self.handle_console_capture_event(e).await;
        }
    }
}