telemetry_kit/sync/
mod.rs1mod auth;
7mod client;
8mod config;
9mod retry;
10
11pub use auth::HmacAuth;
12pub use client::SyncClient;
13pub use config::{SyncConfig, SyncConfigBuilder};
14pub use retry::RetryStrategy;
15
16use serde::{Deserialize, Serialize};
17
18#[derive(Debug, Serialize, Deserialize)]
20#[serde(tag = "status")]
21pub enum SyncResponse {
22 #[serde(rename = "success")]
24 Success {
25 accepted: usize,
27 rejected: usize,
29 message: String,
31 },
32
33 #[serde(rename = "partial")]
35 Partial {
36 accepted: usize,
38 rejected: usize,
40 errors: Vec<EventError>,
42 },
43}
44
45#[derive(Debug, Serialize, Deserialize)]
47pub struct EventError {
48 pub event_id: uuid::Uuid,
50 pub error: String,
52 pub message: String,
54}
55
56#[derive(Debug, Serialize, Deserialize)]
58pub struct ErrorResponse {
59 pub error: String,
61 pub message: String,
63 #[serde(skip_serializing_if = "Option::is_none")]
65 pub details: Option<String>,
66 #[serde(skip_serializing_if = "Option::is_none")]
68 pub retry_after: Option<u64>,
69}
70
71impl SyncResponse {
72 pub fn accepted(&self) -> usize {
74 match self {
75 SyncResponse::Success { accepted, .. } => *accepted,
76 SyncResponse::Partial { accepted, .. } => *accepted,
77 }
78 }
79
80 pub fn rejected(&self) -> usize {
82 match self {
83 SyncResponse::Success { rejected, .. } => *rejected,
84 SyncResponse::Partial { rejected, .. } => *rejected,
85 }
86 }
87
88 pub fn is_success(&self) -> bool {
90 matches!(self, SyncResponse::Success { .. })
91 }
92}