statsig_rust/
initialize_response.rs

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