viewpoint_cdp/protocol/network_cookies/
mod.rs1use serde::{Deserialize, Serialize};
6
7#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
9pub enum CookieSameSite {
10 Strict,
12 #[default]
14 Lax,
15 None,
17}
18
19#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
21pub enum CookiePriority {
22 Low,
24 #[default]
26 Medium,
27 High,
29}
30
31#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
33pub enum CookieSourceScheme {
34 #[default]
36 Unset,
37 NonSecure,
39 Secure,
41}
42
43#[derive(Debug, Clone, Serialize, Deserialize)]
45#[serde(rename_all = "camelCase")]
46pub struct Cookie {
47 pub name: String,
49 pub value: String,
51 pub domain: String,
53 pub path: String,
55 pub expires: f64,
57 pub size: i32,
59 pub http_only: bool,
61 pub secure: bool,
63 pub session: bool,
65 #[serde(skip_serializing_if = "Option::is_none")]
67 pub same_site: Option<CookieSameSite>,
68 #[serde(skip_serializing_if = "Option::is_none")]
70 pub priority: Option<CookiePriority>,
71 #[serde(skip_serializing_if = "Option::is_none")]
73 pub same_party: Option<bool>,
74 #[serde(skip_serializing_if = "Option::is_none")]
76 pub source_scheme: Option<CookieSourceScheme>,
77 #[serde(skip_serializing_if = "Option::is_none")]
79 pub source_port: Option<i32>,
80 #[serde(skip_serializing_if = "Option::is_none")]
82 pub partition_key: Option<String>,
83 #[serde(skip_serializing_if = "Option::is_none")]
85 pub partition_key_opaque: Option<bool>,
86}
87
88#[derive(Debug, Clone, Serialize, Default)]
90#[serde(rename_all = "camelCase")]
91pub struct CookieParam {
92 pub name: String,
94 pub value: String,
96 #[serde(skip_serializing_if = "Option::is_none")]
99 pub url: Option<String>,
100 #[serde(skip_serializing_if = "Option::is_none")]
102 pub domain: Option<String>,
103 #[serde(skip_serializing_if = "Option::is_none")]
105 pub path: Option<String>,
106 #[serde(skip_serializing_if = "Option::is_none")]
108 pub secure: Option<bool>,
109 #[serde(skip_serializing_if = "Option::is_none")]
111 pub http_only: Option<bool>,
112 #[serde(skip_serializing_if = "Option::is_none")]
114 pub same_site: Option<CookieSameSite>,
115 #[serde(skip_serializing_if = "Option::is_none")]
117 pub expires: Option<f64>,
118 #[serde(skip_serializing_if = "Option::is_none")]
120 pub priority: Option<CookiePriority>,
121 #[serde(skip_serializing_if = "Option::is_none")]
123 pub same_party: Option<bool>,
124 #[serde(skip_serializing_if = "Option::is_none")]
126 pub source_scheme: Option<CookieSourceScheme>,
127 #[serde(skip_serializing_if = "Option::is_none")]
129 pub source_port: Option<i32>,
130 #[serde(skip_serializing_if = "Option::is_none")]
132 pub partition_key: Option<String>,
133}
134
135impl CookieParam {
136 pub fn new(name: impl Into<String>, value: impl Into<String>) -> Self {
138 Self {
139 name: name.into(),
140 value: value.into(),
141 ..Default::default()
142 }
143 }
144
145 #[must_use]
147 pub fn url(mut self, url: impl Into<String>) -> Self {
148 self.url = Some(url.into());
149 self
150 }
151
152 #[must_use]
154 pub fn domain(mut self, domain: impl Into<String>) -> Self {
155 self.domain = Some(domain.into());
156 self
157 }
158
159 #[must_use]
161 pub fn path(mut self, path: impl Into<String>) -> Self {
162 self.path = Some(path.into());
163 self
164 }
165
166 #[must_use]
168 pub fn secure(mut self, secure: bool) -> Self {
169 self.secure = Some(secure);
170 self
171 }
172
173 #[must_use]
175 pub fn http_only(mut self, http_only: bool) -> Self {
176 self.http_only = Some(http_only);
177 self
178 }
179
180 #[must_use]
182 pub fn same_site(mut self, same_site: CookieSameSite) -> Self {
183 self.same_site = Some(same_site);
184 self
185 }
186
187 #[must_use]
189 pub fn expires(mut self, expires: f64) -> Self {
190 self.expires = Some(expires);
191 self
192 }
193}
194
195#[derive(Debug, Clone, Serialize, Default)]
197#[serde(rename_all = "camelCase")]
198pub struct GetCookiesParams {
199 #[serde(skip_serializing_if = "Option::is_none")]
201 pub urls: Option<Vec<String>>,
202}
203
204#[derive(Debug, Clone, Deserialize)]
206#[serde(rename_all = "camelCase")]
207pub struct GetCookiesResult {
208 pub cookies: Vec<Cookie>,
210}
211
212#[derive(Debug, Clone, Serialize)]
214#[serde(rename_all = "camelCase")]
215pub struct SetCookiesParams {
216 pub cookies: Vec<CookieParam>,
218}
219
220#[derive(Debug, Clone, Serialize)]
222#[serde(rename_all = "camelCase")]
223pub struct DeleteCookiesParams {
224 pub name: String,
226 #[serde(skip_serializing_if = "Option::is_none")]
228 pub url: Option<String>,
229 #[serde(skip_serializing_if = "Option::is_none")]
231 pub domain: Option<String>,
232 #[serde(skip_serializing_if = "Option::is_none")]
234 pub path: Option<String>,
235 #[serde(skip_serializing_if = "Option::is_none")]
237 pub partition_key: Option<String>,
238}
239
240impl DeleteCookiesParams {
241 pub fn new(name: impl Into<String>) -> Self {
243 Self {
244 name: name.into(),
245 url: None,
246 domain: None,
247 path: None,
248 partition_key: None,
249 }
250 }
251
252 #[must_use]
254 pub fn url(mut self, url: impl Into<String>) -> Self {
255 self.url = Some(url.into());
256 self
257 }
258
259 #[must_use]
261 pub fn domain(mut self, domain: impl Into<String>) -> Self {
262 self.domain = Some(domain.into());
263 self
264 }
265
266 #[must_use]
268 pub fn path(mut self, path: impl Into<String>) -> Self {
269 self.path = Some(path.into());
270 self
271 }
272}
273
274#[derive(Debug, Clone, Serialize, Default)]
276pub struct ClearBrowserCookiesParams {}