statsig_client/
api.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize)]
4pub struct StatsigMetadata {
5    #[serde(rename = "sdkType")]
6    pub sdk_type: String,
7
8    #[serde(rename = "sdkVersion")]
9    pub sdk_version: String,
10
11    #[serde(rename = "exposureLoggingDisabled")]
12    pub exposure_logging_disabled: bool,
13}
14
15#[derive(Debug, Clone, Serialize, Deserialize)]
16pub struct GateEvaluationResult {
17    pub name: String,
18    pub value: bool,
19    #[serde(rename = "rule_id")]
20    pub rule_id: Option<String>,
21    #[serde(rename = "group_name")]
22    pub group_name: Option<String>,
23}
24
25#[derive(Debug, Clone, Serialize, Deserialize)]
26pub struct ConfigEvaluationResult {
27    pub name: String,
28    pub value: serde_json::Value,
29    #[serde(rename = "rule_id")]
30    pub rule_id: Option<String>,
31    #[serde(rename = "group_name")]
32    pub group_name: Option<String>,
33    pub group: Option<String>,
34}
35
36impl StatsigMetadata {
37    pub fn new(sdk_type: impl Into<String>, sdk_version: impl Into<String>) -> Self {
38        Self {
39            sdk_type: sdk_type.into(),
40            sdk_version: sdk_version.into(),
41            exposure_logging_disabled: false,
42        }
43    }
44
45    pub fn with_exposure_logging_disabled(mut self, disabled: bool) -> Self {
46        self.exposure_logging_disabled = disabled;
47        self
48    }
49}
50
51impl Default for StatsigMetadata {
52    fn default() -> Self {
53        Self {
54            sdk_type: "rust-client".to_string(),
55            sdk_version: env!("CARGO_PKG_VERSION").to_string(),
56            exposure_logging_disabled: false,
57        }
58    }
59}