use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum Message {
#[serde(rename = "client_hello")]
ClientHello {
token: String,
local_port: u16,
},
#[serde(rename = "server_hello")]
ServerHello {
public_url: String,
},
#[serde(rename = "proxy_request")]
ProxyRequest {
request_id: String,
method: String,
path: String,
headers: Vec<(String, String)>,
body_b64: String,
},
#[serde(rename = "proxy_response")]
ProxyResponse {
request_id: String,
status: u16,
headers: Vec<(String, String)>,
body_b64: String,
},
#[serde(rename = "ping")]
Ping,
#[serde(rename = "pong")]
Pong,
#[serde(rename = "websocket_upgrade")]
WebSocketUpgrade {
ws_id: String,
path: String,
query: String,
headers: Vec<(String, String)>,
},
#[serde(rename = "websocket_message")]
WebSocketMessage {
ws_id: String,
message_b64: String,
is_binary: bool,
},
#[serde(rename = "websocket_close")]
WebSocketClose {
ws_id: String,
},
#[serde(rename = "error")]
Error {
message: String,
},
}