use crate::models::{Environment, Request};
#[derive(Debug, Clone)]
#[allow(dead_code)] pub enum NetworkCommand {
ExecuteRequest {
id: u64,
request: Request,
environment: Option<Environment>,
},
ExecuteStreamingRequest {
id: u64,
request: Request,
environment: Option<Environment>,
},
CancelRequest(u64),
ConnectWebSocket { id: u64, url: String },
SendWebSocketMessage { id: u64, message: String },
CloseWebSocket(u64),
ExecuteGraphQL {
id: u64,
endpoint: String,
query: String,
variables: Option<String>,
headers: Vec<crate::models::Header>,
auth: crate::models::AuthType,
},
Shutdown,
}
#[derive(Debug, Clone)]
#[allow(dead_code)] pub enum NetworkResponse {
Success {
id: u64,
status: u16,
body: String,
time_ms: u64,
},
StreamChunk {
id: u64,
chunk: String,
bytes_received: usize,
},
StreamComplete {
id: u64,
status: u16,
total_bytes: usize,
time_ms: u64,
},
Error {
id: u64,
message: String,
time_ms: u64,
},
Cancelled { id: u64 },
WebSocketConnected { id: u64 },
WebSocketMessage { id: u64, message: String },
WebSocketClosed { id: u64 },
WebSocketError { id: u64, error: String },
}
impl NetworkResponse {
pub fn id(&self) -> u64 {
match self {
NetworkResponse::Success { id, .. } => *id,
NetworkResponse::StreamChunk { id, .. } => *id,
NetworkResponse::StreamComplete { id, .. } => *id,
NetworkResponse::Error { id, .. } => *id,
NetworkResponse::Cancelled { id } => *id,
NetworkResponse::WebSocketConnected { id } => *id,
NetworkResponse::WebSocketMessage { id, .. } => *id,
NetworkResponse::WebSocketClosed { id } => *id,
NetworkResponse::WebSocketError { id, .. } => *id,
}
}
}