rustenium_bidi_commands/session/
commands.rs1use serde::{Serialize, Deserialize};
4use crate::browser::types::UserContext;
5use crate::browsing_context::types::BrowsingContext;
6use crate::EmptyParams;
7use crate::EmptyResult;
8use super::types::*;
9
10#[derive(Debug, Clone, Serialize, Deserialize)]
11#[serde(untagged)]
12pub enum SessionCommand {
13 End(End),
14 New(New),
15 Status(Status),
16 Subscribe(Subscribe),
17 Unsubscribe(Unsubscribe),
18}
19
20
21#[derive(Debug, Clone, Serialize, Deserialize)]
22pub enum SessionEndMethod {
23 #[serde(rename = "session.end")]
24 SessionEnd,
25}
26
27#[derive(Debug, Clone, Serialize, Deserialize)]
28pub enum SessionNewMethod {
29 #[serde(rename = "session.new")]
30 SessionNew,
31}
32
33#[derive(Debug, Clone, Serialize, Deserialize)]
34pub enum SessionStatusMethod {
35 #[serde(rename = "session.status")]
36 SessionStatus,
37}
38
39#[derive(Debug, Clone, Serialize, Deserialize)]
40pub enum SessionSubscribeMethod {
41 #[serde(rename = "session.subscribe")]
42 SessionSubscribe,
43}
44
45#[derive(Debug, Clone, Serialize, Deserialize)]
46pub enum SessionUnsubscribeMethod {
47 #[serde(rename = "session.unsubscribe")]
48 SessionUnsubscribe,
49}
50
51#[derive(Debug, Clone, Serialize, Deserialize)]
52pub struct NewParameters {
53 #[serde(rename = "capabilities")]
54 pub capabilities: CapabilitiesRequest,
55}
56
57#[derive(Debug, Clone, Serialize, Deserialize)]
58pub struct SubscriptionRequest {
59 #[serde(rename = "events")]
60 pub events: Vec<String>,
61 #[serde(rename = "contexts")]
62 #[serde(skip_serializing_if = "Option::is_none")]
63 pub contexts: Option<Vec<BrowsingContext>>,
64 #[serde(rename = "userContexts")]
65 #[serde(skip_serializing_if = "Option::is_none")]
66 pub user_contexts: Option<Vec<UserContext>>,
67}
68
69#[derive(Debug, Clone, Serialize, Deserialize)]
70#[serde(untagged)]
71pub enum UnsubscribeParameters {
72 UnsubscribeByAttributesRequest(UnsubscribeByAttributesRequest),
73 UnsubscribeByIDRequest(UnsubscribeByIDRequest),
74}
75
76#[derive(Debug, Clone, Serialize, Deserialize)]
77pub struct End {
78 #[serde(rename = "method")]
79 pub method: SessionEndMethod,
80 #[serde(rename = "params")]
81 pub params: EmptyParams,
82}
83
84#[derive(Debug, Clone, Serialize, Deserialize)]
85pub struct New {
86 #[serde(rename = "method")]
87 pub method: SessionNewMethod,
88 #[serde(rename = "params")]
89 pub params: NewParameters,
90}
91
92#[derive(Debug, Clone, Serialize, Deserialize)]
93pub struct Status {
94 #[serde(rename = "method")]
95 pub method: SessionStatusMethod,
96 #[serde(rename = "params")]
97 pub params: EmptyParams,
98}
99
100#[derive(Debug, Clone, Serialize, Deserialize)]
101pub struct Subscribe {
102 #[serde(rename = "method")]
103 pub method: SessionSubscribeMethod,
104 #[serde(rename = "params")]
105 pub params: SubscriptionRequest,
106}
107
108#[derive(Debug, Clone, Serialize, Deserialize)]
109pub struct Unsubscribe {
110 #[serde(rename = "method")]
111 pub method: SessionUnsubscribeMethod,
112 #[serde(rename = "params")]
113 pub params: UnsubscribeParameters,
114}
115
116#[derive(Debug, Clone, Serialize, Deserialize)]
119#[serde(untagged)]
120pub enum SessionResult {
121 EndResult(EndResult),
122 NewResult(NewResult),
123 StatusResult(StatusResult),
124 SubscribeResult(SubscribeResult),
125 UnsubscribeResult(UnsubscribeResult),
126}
127
128
129pub type EndResult = EmptyResult;
130
131
132#[derive(Debug, Clone, Serialize, Deserialize)]
133pub struct NewResult {
134 #[serde(rename = "sessionId")]
135 pub session_id: String,
136 #[serde(rename = "capabilities")]
137 pub capabilities: NewResultCapabilities,
138}
139
140#[derive(Debug, Clone, Serialize, Deserialize)]
141pub struct StatusResult {
142 #[serde(rename = "ready")]
143 pub ready: bool,
144 #[serde(rename = "message")]
145 pub message: String,
146}
147
148#[derive(Debug, Clone, Serialize, Deserialize)]
149pub struct SubscribeResult {
150 #[serde(rename = "subscription")]
151 pub subscription: Subscription,
152}
153
154pub type UnsubscribeResult = EmptyResult;
155
156