use super::config::HttpConfig;
use crate::connector::{self, Connection};
use gaunt;
use uuid::Uuid;
pub struct HttpConnection {
connection: gaunt::Connection,
}
impl HttpConnection {
pub(crate) fn open(config: &HttpConfig) -> Result<Self, connector::Error> {
let connection = gaunt::Connection::new(&config.addr, config.port, &Default::default())?;
Ok(HttpConnection { connection })
}
pub(super) fn post(
&self,
path: &str,
_uuid: Uuid,
body: &[u8],
) -> Result<Vec<u8>, connector::Error> {
Ok(self
.connection
.post(path, &gaunt::request::Body::from(body))?
.into_vec())
}
}
impl Connection for HttpConnection {
fn send_message(
&self,
uuid: Uuid,
cmd: connector::Message,
) -> Result<connector::Message, connector::Error> {
self.post("/connector/api", uuid, cmd.as_ref())
.map(Into::into)
}
}