statsig_rust/
initialize_response.rs

1use crate::evaluation::evaluation_types::{AnyConfigEvaluation, GateEvaluation, LayerEvaluation};
2use crate::spec_types::Parameter;
3use crate::user::{StatsigUserInternal, StatsigUserLoggable};
4
5use serde::{Deserialize, Serialize};
6use std::collections::HashMap;
7
8#[derive(Serialize, Deserialize)]
9pub struct InitializeResponse {
10    pub feature_gates: HashMap<String, GateEvaluation>,
11    pub dynamic_configs: HashMap<String, AnyConfigEvaluation>,
12    pub layer_configs: HashMap<String, LayerEvaluation>,
13    pub time: u64,
14    pub has_updates: bool,
15    pub hash_used: String,
16    pub user: StatsigUserLoggable,
17    #[serde(rename = "sdkInfo")]
18    pub sdk_info: HashMap<String, String>,
19    #[serde(rename = "sdkParams")]
20    pub sdk_params: HashMap<String, String>,
21    pub evaluated_keys: HashMap<String, String>,
22    pub param_stores: HashMap<String, HashMap<String, Parameter>>,
23}
24
25impl InitializeResponse {
26    pub fn blank(user: StatsigUserInternal) -> Self {
27        Self {
28            feature_gates: Default::default(),
29            dynamic_configs: Default::default(),
30            layer_configs: Default::default(),
31            time: 0,
32            has_updates: false,
33            hash_used: Default::default(),
34            user: user.to_loggable(),
35            sdk_params: Default::default(),
36            evaluated_keys: Default::default(),
37            sdk_info: Default::default(),
38            param_stores: Default::default(),
39        }
40    }
41}