drive_v3/objects/
channel.rs1use std::fmt;
2use serde::{Serialize, Deserialize};
3
4#[derive(Clone, Serialize, Deserialize)]
10#[serde(rename_all = "camelCase")]
11pub struct Channel {
12 #[serde(skip_serializing_if = "Option::is_none")]
14 pub payload: Option<bool>,
15
16 #[serde(skip_serializing_if = "Option::is_none")]
18 pub id: Option<String>,
19
20 #[serde(skip_serializing_if = "Option::is_none")]
24 pub resource_id: Option<String>,
25
26 #[serde(skip_serializing_if = "Option::is_none")]
28 pub resource_uri: Option<String>,
29
30 #[serde(skip_serializing_if = "Option::is_none")]
33 pub token: Option<String>,
34
35 #[serde(skip_serializing_if = "Option::is_none")]
38 pub expiration: Option<String>,
39
40 #[serde(skip_serializing_if = "Option::is_none")]
44 #[serde(rename = "type")]
45 pub channel_type: Option<String>,
46
47 #[serde(skip_serializing_if = "Option::is_none")]
49 pub address: Option<String>,
50
51 #[serde(skip_serializing_if = "Option::is_none")]
53 pub params: Option<serde_json::Map<String, serde_json::Value>>,
54
55 #[serde(skip_serializing_if = "Option::is_none")]
57 pub kind: Option<String>,
58}
59
60impl fmt::Debug for Channel {
61 fn fmt( &self, f: &mut fmt::Formatter<'_> ) -> fmt::Result {
62 f.debug_struct("Channel")
63 .field("payload", &self.payload)
64 .field("id", &self.id)
65 .field("resource_id", &self.resource_id)
66 .field("resource_uri", &self.resource_uri)
67 .field("token", &format_args!("[hidden for security]"))
68 .field("expiration", &self.expiration)
69 .field("channel_type", &self.channel_type)
70 .field("address", &self.address)
71 .field("params", &self.params)
72 .field("kind", &self.kind)
73 .finish()
74 }
75}
76
77
78impl fmt::Display for Channel {
79 fn fmt( &self, f: &mut fmt::Formatter<'_> ) -> fmt::Result {
80 let json = serde_json::to_string_pretty(&self)
81 .unwrap_or( format!("unable to parse JSON, this is the debug view:\n{:#?}", self) );
82
83 write!(f, "{}", json)
84 }
85}
86
87impl Default for Channel {
88 fn default() -> Self {
89 Self {
90 payload: Default::default(),
91 id: Default::default(),
92 resource_id: Default::default(),
93 resource_uri: Default::default(),
94 token: Default::default(),
95 expiration: Default::default(),
96 channel_type: Some( "web_hook".to_string() ),
97 address: Default::default(),
98 params: Default::default(),
99 kind: Default::default(),
100 }
101 }
102}
103
104#[doc(hidden)]
105impl From<&Self> for Channel {
106 fn from( reference: &Self ) -> Self {
107 reference.clone()
108 }
109}
110
111impl Channel {
112 pub fn new() -> Self {
114 Self { ..Default::default() }
115 }
116
117 pub fn from<T, U> ( channel_id: T, address: U ) -> Self
119 where
120 T: AsRef<str>,
121 U: AsRef<str>,
122 {
123 Self {
124 id: Some( channel_id.as_ref().to_string() ),
125 address: Some( address.as_ref().to_string() ),
126 ..Default::default()
127 }
128 }
129}