browser_protocol/io/
mod.rs1use serde::{Serialize, Deserialize};
5use serde_json::Value as JsonValue;
6use std::borrow::Cow;
7
8pub type StreamHandle<'a> = Cow<'a, str>;
12
13#[derive(Debug, Clone, Serialize, Deserialize, Default)]
16#[serde(rename_all = "camelCase")]
17pub struct CloseParams<'a> {
18 handle: StreamHandle<'a>,
20}
21
22impl<'a> CloseParams<'a> {
23 pub fn builder(handle: impl Into<StreamHandle<'a>>) -> CloseParamsBuilder<'a> {
26 CloseParamsBuilder {
27 handle: handle.into(),
28 }
29 }
30 pub fn handle(&self) -> &StreamHandle<'a> { &self.handle }
32}
33
34
35pub struct CloseParamsBuilder<'a> {
36 handle: StreamHandle<'a>,
37}
38
39impl<'a> CloseParamsBuilder<'a> {
40 pub fn build(self) -> CloseParams<'a> {
41 CloseParams {
42 handle: self.handle,
43 }
44 }
45}
46
47impl<'a> CloseParams<'a> { pub const METHOD: &'static str = "IO.close"; }
48
49impl<'a> crate::CdpCommand<'a> for CloseParams<'a> {
50 const METHOD: &'static str = "IO.close";
51 type Response = crate::EmptyReturns;
52}
53
54#[derive(Debug, Clone, Serialize, Deserialize, Default)]
57#[serde(rename_all = "camelCase")]
58pub struct ReadParams<'a> {
59 handle: StreamHandle<'a>,
61 #[serde(skip_serializing_if = "Option::is_none")]
64 offset: Option<i32>,
65 #[serde(skip_serializing_if = "Option::is_none")]
67 size: Option<u64>,
68}
69
70impl<'a> ReadParams<'a> {
71 pub fn builder(handle: impl Into<StreamHandle<'a>>) -> ReadParamsBuilder<'a> {
74 ReadParamsBuilder {
75 handle: handle.into(),
76 offset: None,
77 size: None,
78 }
79 }
80 pub fn handle(&self) -> &StreamHandle<'a> { &self.handle }
82 pub fn offset(&self) -> Option<i32> { self.offset }
85 pub fn size(&self) -> Option<u64> { self.size }
87}
88
89
90pub struct ReadParamsBuilder<'a> {
91 handle: StreamHandle<'a>,
92 offset: Option<i32>,
93 size: Option<u64>,
94}
95
96impl<'a> ReadParamsBuilder<'a> {
97 pub fn offset(mut self, offset: i32) -> Self { self.offset = Some(offset); self }
100 pub fn size(mut self, size: u64) -> Self { self.size = Some(size); self }
102 pub fn build(self) -> ReadParams<'a> {
103 ReadParams {
104 handle: self.handle,
105 offset: self.offset,
106 size: self.size,
107 }
108 }
109}
110
111#[derive(Debug, Clone, Serialize, Deserialize, Default)]
114#[serde(rename_all = "camelCase")]
115pub struct ReadReturns<'a> {
116 #[serde(skip_serializing_if = "Option::is_none", rename = "base64Encoded")]
118 base64_encoded: Option<bool>,
119 data: Cow<'a, str>,
121 eof: bool,
123}
124
125impl<'a> ReadReturns<'a> {
126 pub fn builder(data: impl Into<Cow<'a, str>>, eof: bool) -> ReadReturnsBuilder<'a> {
130 ReadReturnsBuilder {
131 base64_encoded: None,
132 data: data.into(),
133 eof: eof,
134 }
135 }
136 pub fn base64_encoded(&self) -> Option<bool> { self.base64_encoded }
138 pub fn data(&self) -> &str { self.data.as_ref() }
140 pub fn eof(&self) -> bool { self.eof }
142}
143
144
145pub struct ReadReturnsBuilder<'a> {
146 base64_encoded: Option<bool>,
147 data: Cow<'a, str>,
148 eof: bool,
149}
150
151impl<'a> ReadReturnsBuilder<'a> {
152 pub fn base64_encoded(mut self, base64_encoded: bool) -> Self { self.base64_encoded = Some(base64_encoded); self }
154 pub fn build(self) -> ReadReturns<'a> {
155 ReadReturns {
156 base64_encoded: self.base64_encoded,
157 data: self.data,
158 eof: self.eof,
159 }
160 }
161}
162
163impl<'a> ReadParams<'a> { pub const METHOD: &'static str = "IO.read"; }
164
165impl<'a> crate::CdpCommand<'a> for ReadParams<'a> {
166 const METHOD: &'static str = "IO.read";
167 type Response = ReadReturns<'a>;
168}
169
170#[derive(Debug, Clone, Serialize, Deserialize, Default)]
173#[serde(rename_all = "camelCase")]
174pub struct ResolveBlobParams<'a> {
175 #[serde(rename = "objectId")]
177 object_id: crate::runtime::RemoteObjectId<'a>,
178}
179
180impl<'a> ResolveBlobParams<'a> {
181 pub fn builder(object_id: crate::runtime::RemoteObjectId<'a>) -> ResolveBlobParamsBuilder<'a> {
184 ResolveBlobParamsBuilder {
185 object_id: object_id,
186 }
187 }
188 pub fn object_id(&self) -> &crate::runtime::RemoteObjectId<'a> { &self.object_id }
190}
191
192
193pub struct ResolveBlobParamsBuilder<'a> {
194 object_id: crate::runtime::RemoteObjectId<'a>,
195}
196
197impl<'a> ResolveBlobParamsBuilder<'a> {
198 pub fn build(self) -> ResolveBlobParams<'a> {
199 ResolveBlobParams {
200 object_id: self.object_id,
201 }
202 }
203}
204
205#[derive(Debug, Clone, Serialize, Deserialize, Default)]
208#[serde(rename_all = "camelCase")]
209pub struct ResolveBlobReturns<'a> {
210 uuid: Cow<'a, str>,
212}
213
214impl<'a> ResolveBlobReturns<'a> {
215 pub fn builder(uuid: impl Into<Cow<'a, str>>) -> ResolveBlobReturnsBuilder<'a> {
218 ResolveBlobReturnsBuilder {
219 uuid: uuid.into(),
220 }
221 }
222 pub fn uuid(&self) -> &str { self.uuid.as_ref() }
224}
225
226
227pub struct ResolveBlobReturnsBuilder<'a> {
228 uuid: Cow<'a, str>,
229}
230
231impl<'a> ResolveBlobReturnsBuilder<'a> {
232 pub fn build(self) -> ResolveBlobReturns<'a> {
233 ResolveBlobReturns {
234 uuid: self.uuid,
235 }
236 }
237}
238
239impl<'a> ResolveBlobParams<'a> { pub const METHOD: &'static str = "IO.resolveBlob"; }
240
241impl<'a> crate::CdpCommand<'a> for ResolveBlobParams<'a> {
242 const METHOD: &'static str = "IO.resolveBlob";
243 type Response = ResolveBlobReturns<'a>;
244}