statsig-rust 0.19.2-beta.2604150312

Statsig Rust SDK for usage in multi-user server environments.
Documentation
use crate::evaluation::dynamic_returnable::DynamicReturnable;
use crate::evaluation::evaluation_types::SecondaryExposure;
use crate::evaluation::evaluation_types_initialize_v2::{
    AnyConfigEvaluationInitV2, GateEvaluationInitV2, LayerEvaluationInitV2,
};
use crate::gcir::gcir_formatter::EvaluatedKeys;
use crate::interned_string::InternedString;
use crate::specs_response::param_store_types::Parameter;
use crate::specs_response::spec_types::{SessionReplayPrivacySetting, SessionReplayTrigger};
use crate::user::{StatsigUserInternal, StatsigUserLoggable};
use serde::{Deserialize, Serialize};
use serde_with::skip_serializing_none;
use std::collections::HashMap;

#[skip_serializing_none]
#[derive(Serialize, Deserialize)]
pub struct InitializeV2Response {
    pub feature_gates: HashMap<String, GateEvaluationInitV2>,
    pub dynamic_configs: HashMap<String, AnyConfigEvaluationInitV2>,
    pub layer_configs: HashMap<String, LayerEvaluationInitV2>,
    pub param_stores: HashMap<String, HashMap<String, Parameter>>,
    pub time: u64,
    pub has_updates: bool,
    pub hash_used: String,
    pub user: StatsigUserLoggable,
    #[serde(rename = "sdkInfo")]
    pub sdk_info: HashMap<String, String>,
    #[serde(rename = "sdkParams")]
    pub sdk_params: HashMap<String, String>,
    pub evaluated_keys: EvaluatedKeys,
    pub exposures: HashMap<InternedString, SecondaryExposure>,
    pub can_record_session: Option<bool>,
    pub session_recording_rate: Option<f64>,
    pub recording_blocked: Option<bool>,
    pub passes_session_recording_targeting: Option<bool>,
    pub session_recording_event_triggers: Option<HashMap<String, SessionReplayTrigger>>,
    pub session_recording_exposure_triggers: Option<HashMap<String, SessionReplayTrigger>>,
    pub session_recording_privacy_settings: Option<SessionReplayPrivacySetting>,
    pub pa_hash: Option<String>,
    pub values: HashMap<InternedString, DynamicReturnable>,
    pub response_format: String,
}

impl InitializeV2Response {
    pub fn blank(user: StatsigUserInternal) -> Self {
        Self {
            feature_gates: Default::default(),
            dynamic_configs: Default::default(),
            layer_configs: Default::default(),
            time: 0,
            has_updates: false,
            hash_used: Default::default(),
            user: user.to_loggable(),
            sdk_params: Default::default(),
            evaluated_keys: Default::default(),
            sdk_info: Default::default(),
            param_stores: Default::default(),
            exposures: Default::default(),
            can_record_session: Default::default(),
            session_recording_rate: Default::default(),
            recording_blocked: Default::default(),
            passes_session_recording_targeting: Default::default(),
            session_recording_event_triggers: Default::default(),
            session_recording_exposure_triggers: Default::default(),
            session_recording_privacy_settings: Default::default(),
            pa_hash: Default::default(),
            response_format: "init-v2".to_string(),
            values: Default::default(),
        }
    }
}