Skip to main content

browser_commander/playwright/protocol/
web_socket.rs

1// @generated by scripts/generate-playwright-protocol.mjs from
2// rust/protocol/playwright/*.yml. Do not edit by hand.
3
4#![allow(clippy::all, missing_docs, unused_imports)]
5
6use serde::{Deserialize, Serialize};
7
8use super::*;
9use crate::playwright::connection::{
10    Binary, Channel, ChannelType, ObjectRef, ProtocolError, ProtocolEvent, Ref,
11};
12
13/// Initializer the driver sends when it creates a `WebSocket`.
14#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
15pub struct WebSocketInitializer {
16    #[serde(rename = "url")]
17    pub url: String,
18}
19
20/// Payload of the `WebSocket.frameSent` event.
21#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
22pub struct WebSocketFrameSentEventParams {
23    #[serde(rename = "opcode")]
24    pub opcode: i64,
25    #[serde(rename = "data")]
26    pub data: String,
27}
28
29/// Payload of the `WebSocket.frameReceived` event.
30#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
31pub struct WebSocketFrameReceivedEventParams {
32    #[serde(rename = "opcode")]
33    pub opcode: i64,
34    #[serde(rename = "data")]
35    pub data: String,
36}
37
38/// Payload of the `WebSocket.socketError` event.
39#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
40pub struct WebSocketSocketErrorEventParams {
41    #[serde(rename = "error")]
42    pub error: String,
43}
44
45/// Events a `WebSocket` channel can emit.
46#[derive(Debug, Clone, PartialEq)]
47pub enum WebSocketEvent {
48    /// `WebSocket.open`
49    Open,
50    /// `WebSocket.frameSent`
51    FrameSent(WebSocketFrameSentEventParams),
52    /// `WebSocket.frameReceived`
53    FrameReceived(WebSocketFrameReceivedEventParams),
54    /// `WebSocket.socketError`
55    SocketError(WebSocketSocketErrorEventParams),
56    /// `WebSocket.close`
57    Close,
58    /// An event this binding does not know (a newer driver).
59    Unknown {
60        /// Event name.
61        method: String,
62        /// Raw event parameters.
63        params: serde_json::Value,
64    },
65}
66
67impl ProtocolEvent for WebSocketEvent {
68    fn parse(method: &str, params: serde_json::Value) -> Result<Self, serde_json::Error> {
69        match method {
70            "open" => Ok(Self::Open),
71            "frameSent" => Ok(Self::FrameSent(serde_json::from_value(params)?)),
72            "frameReceived" => Ok(Self::FrameReceived(serde_json::from_value(params)?)),
73            "socketError" => Ok(Self::SocketError(serde_json::from_value(params)?)),
74            "close" => Ok(Self::Close),
75            _ => Ok(Self::Unknown { method: method.to_string(), params }),
76        }
77    }
78}
79
80/// Channel for the `WebSocket` interface (`network.yml`).
81#[derive(Debug, Clone)]
82pub struct WebSocket {
83    channel: Channel,
84}
85
86impl ChannelType for WebSocket {
87    const INTERFACE: &'static str = "WebSocket";
88    type Initializer = WebSocketInitializer;
89    type Event = WebSocketEvent;
90
91    fn accepts(interface: &str) -> bool {
92        matches!(interface, "WebSocket")
93    }
94
95    fn from_channel(channel: Channel) -> Self {
96        Self { channel }
97    }
98
99    fn channel(&self) -> &Channel {
100        &self.channel
101    }
102}
103
104impl WebSocket {
105}