tauri_plugin_posthog/
models.rs

1use chrono::{DateTime, Utc};
2use serde::{Deserialize, Serialize};
3use std::collections::HashMap;
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
6#[serde(rename_all = "camelCase")]
7pub struct CaptureRequest {
8    pub event: String,
9    #[serde(skip_serializing_if = "Option::is_none")]
10    pub properties: Option<HashMap<String, serde_json::Value>>,
11    #[serde(skip_serializing_if = "Option::is_none")]
12    pub distinct_id: Option<String>,
13    #[serde(skip_serializing_if = "Option::is_none")]
14    pub groups: Option<HashMap<String, String>>,
15    #[serde(skip_serializing_if = "Option::is_none")]
16    pub timestamp: Option<DateTime<Utc>>,
17    #[serde(default)]
18    pub anonymous: bool,
19}
20
21#[derive(Debug, Clone, Serialize, Deserialize)]
22#[serde(rename_all = "camelCase")]
23pub struct IdentifyRequest {
24    pub distinct_id: String,
25    #[serde(skip_serializing_if = "Option::is_none")]
26    pub properties: Option<HashMap<String, serde_json::Value>>,
27}
28
29#[derive(Debug, Clone, Serialize, Deserialize)]
30#[serde(rename_all = "camelCase")]
31pub struct AliasRequest {
32    pub distinct_id: String,
33    pub alias: String,
34}
35
36#[derive(Debug, Clone, Serialize, Deserialize)]
37#[serde(rename_all = "camelCase")]
38pub struct PostHogConfig {
39    pub api_key: String,
40    #[serde(default = "default_api_endpoint")]
41    pub api_endpoint: String,
42    #[serde(default = "default_request_timeout")]
43    pub request_timeout_seconds: u64,
44}
45
46impl Default for PostHogConfig {
47    fn default() -> Self {
48        Self {
49            api_key: String::new(),
50            api_endpoint: default_api_endpoint(),
51            request_timeout_seconds: default_request_timeout(),
52        }
53    }
54}
55
56#[derive(Debug, Clone, Serialize, Deserialize)]
57#[serde(rename_all = "camelCase")]
58pub struct BatchCaptureRequest {
59    pub events: Vec<CaptureRequest>,
60}
61
62pub fn default_api_endpoint() -> String {
63    "https://us.i.posthog.com/i/v0/e/".to_string()
64}
65
66fn default_request_timeout() -> u64 {
67    30
68}