pub mod web_api;
pub mod websocket_cm;
use std::collections::HashMap;
pub use web_api::WebApiTransport;
pub use websocket_cm::WebSocketCMTransport;
use crate::error::SessionError;
#[derive(Debug, Clone)]
pub struct ApiRequest {
pub api_interface: String,
pub api_method: String,
pub api_version: u32,
pub access_token: Option<String>,
pub request_data: Option<Vec<u8>>,
pub headers: HashMap<String, String>,
}
#[derive(Debug, Clone)]
pub struct ApiResponse {
pub result: Option<i32>,
pub error_message: Option<String>,
pub response_data: Option<Vec<u8>>,
}
#[derive(Debug, Clone)]
pub enum Transport {
WebApi(WebApiTransport),
WebSocketCM(WebSocketCMTransport),
}
impl Transport {
pub async fn send_request(&self, request: ApiRequest) -> Result<ApiResponse, SessionError> {
match self {
Transport::WebApi(t) => t.send_request(request).await,
Transport::WebSocketCM(t) => t.send_request(request).await,
}
}
}