statsig_rust/
initialize_response.rs1use 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}