cloudflare/endpoints/argo_tunnel/
data_structures.rs1use chrono::{offset::Utc, DateTime};
2use uuid::Uuid;
3
4use crate::framework::ApiResultTraits;
5
6#[derive(Deserialize, Serialize, Debug, Clone, PartialEq, Eq)]
10pub struct Tunnel {
11 pub id: Uuid,
12 pub created_at: DateTime<Utc>,
13 pub deleted_at: Option<DateTime<Utc>>,
14 pub name: String,
15 pub connections: Vec<ActiveConnection>,
16 pub metadata: serde_json::Value,
17}
18
19#[derive(Deserialize, Serialize, Debug, Clone, PartialEq, Eq)]
22pub struct ActiveConnection {
23 pub colo_name: String,
24 pub id: Uuid,
25 pub is_pending_reconnect: bool,
26}
27
28impl ApiResultTraits for Tunnel {}
29impl ApiResultTraits for Vec<Tunnel> {}
30
31#[derive(Deserialize, Serialize, Debug, Clone, PartialEq, Eq)]
33#[serde(untagged)]
34pub enum RouteResult {
35 Dns(DnsRouteResult),
36 Lb(LoadBalancerRouteResult),
37}
38
39#[derive(Deserialize, Serialize, Debug, Clone, PartialEq, Eq)]
40pub struct DnsRouteResult {
41 pub cname: Change,
42}
43
44#[derive(Deserialize, Serialize, Debug, Clone, PartialEq, Eq)]
45pub struct LoadBalancerRouteResult {
46 pub load_balancer: Change,
47 pub pool: Change,
48}
49
50#[derive(Deserialize, Serialize, Debug, Clone, PartialEq, Eq)]
51#[serde(rename_all = "lowercase")]
52pub enum Change {
53 Unchanged,
54 New,
55 Updated,
56}
57
58impl ApiResultTraits for RouteResult {}