1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize)]
4#[serde(tag = "type")]
5pub enum Message {
6 #[serde(rename = "client_hello")]
7 ClientHello {
8 token: String,
9 local_port: u16,
10 },
11 #[serde(rename = "server_hello")]
12 ServerHello {
13 public_url: String,
14 },
15 #[serde(rename = "proxy_request")]
16 ProxyRequest {
17 request_id: String,
18 method: String,
19 path: String,
20 headers: Vec<(String, String)>,
21 body_b64: String,
22 },
23 #[serde(rename = "proxy_response")]
24 ProxyResponse {
25 request_id: String,
26 status: u16,
27 headers: Vec<(String, String)>,
28 body_b64: String,
29 },
30 #[serde(rename = "ping")]
31 Ping,
32 #[serde(rename = "pong")]
33 Pong,
34 #[serde(rename = "websocket_upgrade")]
35 WebSocketUpgrade {
36 ws_id: String,
37 path: String,
38 query: String,
39 headers: Vec<(String, String)>,
40 },
41 #[serde(rename = "websocket_message")]
42 WebSocketMessage {
43 ws_id: String,
44 message_b64: String,
45 is_binary: bool,
46 },
47 #[serde(rename = "websocket_close")]
48 WebSocketClose {
49 ws_id: String,
50 },
51 #[serde(rename = "error")]
52 Error {
53 message: String,
54 },
55}