use crate::{EndhostApiInfo, proto::endhost::discovery::v1::RpcEndhostApiInfo};
#[derive(Debug, thiserror::Error, PartialEq, Eq, Clone)]
pub enum EndhostApiFromRpcError {
#[error("address field was empty")]
MissingAddress,
#[error("invalid address: {0}")]
InvalidAddress(#[from] url::ParseError),
}
impl TryFrom<RpcEndhostApiInfo> for EndhostApiInfo {
type Error = EndhostApiFromRpcError;
fn try_from(value: RpcEndhostApiInfo) -> Result<Self, Self::Error> {
if value.address.is_empty() {
return Err(EndhostApiFromRpcError::MissingAddress);
}
let address = value.address.parse()?;
Ok(EndhostApiInfo { address })
}
}
impl From<EndhostApiInfo> for RpcEndhostApiInfo {
fn from(value: EndhostApiInfo) -> Self {
RpcEndhostApiInfo {
address: value.address.to_string(),
}
}
}