use std::path::PathBuf;
use anyhow::Result;
use crate::client::Client;
use crate::connect;
use crate::ipc::{Request, Response};
use crate::server::handler;
pub enum Executor {
Server(Client),
Direct {
host: String,
auth_token_file: PathBuf,
timeout: u64,
},
}
impl Executor {
pub async fn send_request(&self, request: Request) -> Result<Response> {
match self {
Executor::Server(client) => client.send_request(request).await,
Executor::Direct {
host,
auth_token_file,
timeout,
} => {
tracing::debug!("direct mode: connecting to TV at {host} (bypassing server)");
let tv = connect::connect(host, auth_token_file, *timeout).await?;
Ok(handler::dispatch(request, &tv).await)
}
}
}
}