statsig-rust 0.19.1-beta.2604110309

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

use crate::console_capture::console_log_line_levels::StatsigLogLineLevel;
use crate::event_logging::event_logger::EventLogger;
use crate::event_logging::event_queue::queued_passthrough::EnqueuePassthroughOp;
use crate::event_logging::statsig_event_internal::StatsigEventInternal;
use crate::observability::console_capture_observer::ConsoleCaptureEvent;

pub struct ConsoleCaptureHandler {
    event_logger: Arc<EventLogger>,
}

impl ConsoleCaptureHandler {
    pub fn new(event_logger: Arc<EventLogger>) -> Self {
        Self { event_logger }
    }

    pub fn handle_console_capture_event(&self, event: ConsoleCaptureEvent) {
        let log_level = StatsigLogLineLevel::from_string(&event.level);
        let Some(log_level) = log_level else {
            return;
        };

        let metadata = event.stack_trace.map(|stack_trace| {
            let mut map = HashMap::new();
            map.insert("trace".to_string(), stack_trace);
            map
        });

        self.event_logger.enqueue(EnqueuePassthroughOp {
            event: StatsigEventInternal::new_statsig_log_line_event(
                event.user,
                log_level,
                Some(event.payload.join(" ")),
                metadata,
                Some(event.timestamp),
            ),
        });
    }
}