#![cfg(feature = "sync")]
use std::{io::Write, net::TcpStream};
use crate::{options::SAMV3_TCP_PORT, proto::router::RouterApiController};
pub struct RouterApi {}
impl RouterApi {
pub fn lookup_name(name: &str) -> crate::Result<String> {
let mut controller = RouterApiController::new();
let mut stream = TcpStream::connect(format!("127.0.0.1:{SAMV3_TCP_PORT}"))?;
let command = controller.handshake_router_api()?;
stream.write_all(&command)?;
let (mut stream, response) = read_response!(stream);
controller.handle_response(&response)?;
let command = controller.lookup_name(name)?;
stream.write_all(&command)?;
let (_session_stream, response) = read_response!(stream);
controller.handle_response(&response)?;
Ok(controller.destination())
}
pub fn generate_destination() -> crate::Result<(String, String)> {
let mut controller = RouterApiController::new();
let mut stream = TcpStream::connect(format!("127.0.0.1:{SAMV3_TCP_PORT}"))?;
let command = controller.handshake_router_api()?;
stream.write_all(&command)?;
let (mut stream, response) = read_response!(stream);
controller.handle_response(&response)?;
let command = controller.generate_destination()?;
stream.write_all(&command)?;
let (_session_stream, response) = read_response!(stream);
controller.handle_response(&response)?;
Ok(controller.generated_destination())
}
}