rustenium_bidi_definitions/session/
command_builders.rs1use super::commands::*;
2#[derive(Debug, Clone, Default)]
3pub struct StatusBuilder;
4impl StatusBuilder {
5 pub fn new() -> Self {
6 Self
7 }
8 pub fn build(self) -> Status {
9 Status {
10 method: StatusMethod::Status,
11 params: StatusParams {},
12 }
13 }
14}
15impl Status {
16 pub fn builder() -> StatusBuilder {
17 StatusBuilder
18 }
19}
20impl New {
21 pub fn builder() -> NewBuilder {
22 <NewBuilder as Default>::default()
23 }
24}
25#[derive(Default, Clone)]
26pub struct NewBuilder {
27 capabilities: Option<super::types::CapabilitiesRequest>,
28}
29impl NewBuilder {
30 pub fn capabilities(
31 mut self,
32 capabilities: impl Into<super::types::CapabilitiesRequest>,
33 ) -> Self {
34 self.capabilities = Some(capabilities.into());
35 self
36 }
37 pub fn build(self) -> Result<New, String> {
38 Ok(New {
39 method: NewMethod::New,
40 params: NewParams {
41 capabilities: self.capabilities.ok_or_else(|| {
42 format!("Field `{}` is mandatory.", std::stringify!(capabilities))
43 })?,
44 },
45 })
46 }
47}
48#[derive(Debug, Clone, Default)]
49pub struct EndBuilder;
50impl EndBuilder {
51 pub fn new() -> Self {
52 Self
53 }
54 pub fn build(self) -> End {
55 End {
56 method: EndMethod::End,
57 params: EndParams {},
58 }
59 }
60}
61impl End {
62 pub fn builder() -> EndBuilder {
63 EndBuilder
64 }
65}
66impl Subscribe {
67 pub fn builder() -> SubscribeBuilder {
68 <SubscribeBuilder as Default>::default()
69 }
70}
71#[derive(Default, Clone)]
72pub struct SubscribeBuilder {
73 events: Option<Vec<String>>,
74 contexts: Option<Vec<crate::browsing_context::types::BrowsingContext>>,
75 user_contexts: Option<Vec<crate::browser::types::UserContext>>,
76}
77impl SubscribeBuilder {
78 pub fn event(mut self, event: impl Into<String>) -> Self {
79 let v = self.events.get_or_insert(Vec::new());
80 v.push(event.into());
81 self
82 }
83 pub fn events<I, S>(mut self, events: I) -> Self
84 where
85 I: IntoIterator<Item = S>,
86 S: Into<String>,
87 {
88 let v = self.events.get_or_insert(Vec::new());
89 for val in events {
90 v.push(val.into());
91 }
92 self
93 }
94 pub fn context(
95 mut self,
96 context: impl Into<crate::browsing_context::types::BrowsingContext>,
97 ) -> Self {
98 let v = self.contexts.get_or_insert(Vec::new());
99 v.push(context.into());
100 self
101 }
102 pub fn contexts<I, S>(mut self, contexts: I) -> Self
103 where
104 I: IntoIterator<Item = S>,
105 S: Into<crate::browsing_context::types::BrowsingContext>,
106 {
107 let v = self.contexts.get_or_insert(Vec::new());
108 for val in contexts {
109 v.push(val.into());
110 }
111 self
112 }
113 pub fn user_context(
114 mut self,
115 user_context: impl Into<crate::browser::types::UserContext>,
116 ) -> Self {
117 let v = self.user_contexts.get_or_insert(Vec::new());
118 v.push(user_context.into());
119 self
120 }
121 pub fn user_contexts<I, S>(mut self, user_contexts: I) -> Self
122 where
123 I: IntoIterator<Item = S>,
124 S: Into<crate::browser::types::UserContext>,
125 {
126 let v = self.user_contexts.get_or_insert(Vec::new());
127 for val in user_contexts {
128 v.push(val.into());
129 }
130 self
131 }
132 pub fn build(self) -> Result<Subscribe, String> {
133 Ok(Subscribe {
134 method: SubscribeMethod::Subscribe,
135 params: SubscribeParams {
136 events: self
137 .events
138 .ok_or_else(|| format!("Field `{}` is mandatory.", std::stringify!(events)))?,
139 contexts: self.contexts,
140 user_contexts: self.user_contexts,
141 },
142 })
143 }
144}
145impl Unsubscribe {
146 pub fn builder() -> UnsubscribeBuilder {
147 <UnsubscribeBuilder as Default>::default()
148 }
149}
150#[derive(Default, Clone)]
151pub struct UnsubscribeBuilder {
152 unsubscribe_parameters: Option<super::types::UnsubscribeParameters>,
153}
154impl UnsubscribeBuilder {
155 pub fn unsubscribe_parameters(
156 mut self,
157 unsubscribe_parameters: impl Into<super::types::UnsubscribeParameters>,
158 ) -> Self {
159 self.unsubscribe_parameters = Some(unsubscribe_parameters.into());
160 self
161 }
162 pub fn build(self) -> Result<Unsubscribe, String> {
163 Ok(Unsubscribe {
164 method: UnsubscribeMethod::Unsubscribe,
165 params: UnsubscribeParams {
166 unsubscribe_parameters: self.unsubscribe_parameters.ok_or_else(|| {
167 format!(
168 "Field `{}` is mandatory.",
169 std::stringify!(unsubscribe_parameters)
170 )
171 })?,
172 },
173 })
174 }
175}