statsig_rust/
initialize_response.rs

1use crate::{
2    evaluation::evaluation_types::{AnyConfigEvaluation, GateEvaluation, LayerEvaluation},
3    interned_string::InternedString,
4    specs_response::{param_store_types::Parameter, spec_types::SessionReplayTrigger},
5    user::{StatsigUserInternal, StatsigUserLoggable},
6};
7
8use serde::{Deserialize, Serialize};
9use serde_with::skip_serializing_none;
10use std::collections::HashMap;
11
12#[skip_serializing_none]
13#[derive(Serialize, Deserialize)]
14pub struct InitializeResponse {
15    pub feature_gates: HashMap<String, GateEvaluation>,
16    pub dynamic_configs: HashMap<String, AnyConfigEvaluation>,
17    pub layer_configs: HashMap<String, LayerEvaluation>,
18    pub time: u64,
19    pub has_updates: bool,
20    pub hash_used: String,
21    pub user: StatsigUserLoggable,
22    #[serde(rename = "sdkInfo")]
23    pub sdk_info: HashMap<String, String>,
24    #[serde(rename = "sdkParams")]
25    pub sdk_params: HashMap<String, String>,
26    pub evaluated_keys: HashMap<InternedString, InternedString>,
27    pub param_stores: HashMap<String, HashMap<String, Parameter>>,
28    pub can_record_session: Option<bool>,
29    pub session_recording_rate: Option<f64>,
30    pub recording_blocked: Option<bool>,
31    pub passes_session_recording_targeting: Option<bool>,
32    pub session_recording_event_triggers: Option<HashMap<String, SessionReplayTrigger>>,
33    pub session_recording_exposure_triggers: Option<HashMap<String, SessionReplayTrigger>>,
34    pub pa_hash: Option<String>,
35}
36
37impl InitializeResponse {
38    pub fn blank(user: StatsigUserInternal) -> Self {
39        Self {
40            feature_gates: Default::default(),
41            dynamic_configs: Default::default(),
42            layer_configs: Default::default(),
43            time: 0,
44            has_updates: false,
45            hash_used: Default::default(),
46            user: user.to_loggable(),
47            sdk_params: Default::default(),
48            evaluated_keys: Default::default(),
49            sdk_info: Default::default(),
50            param_stores: Default::default(),
51            can_record_session: Default::default(),
52            session_recording_rate: Default::default(),
53            recording_blocked: Default::default(),
54            passes_session_recording_targeting: Default::default(),
55            session_recording_event_triggers: Default::default(),
56            session_recording_exposure_triggers: Default::default(),
57            pa_hash: user.get_hashed_private_attributes(),
58        }
59    }
60}