use CloudBuilder;
use enums::CloudProtocol;
use rss::Cloud;
use utils::string_utils;
impl CloudBuilder
{
pub fn new() -> CloudBuilder
{
CloudBuilder::default()
}
pub fn domain(&mut self, domain: &str) -> &mut CloudBuilder
{
self.domain = domain.to_owned();
self
}
pub fn port(&mut self, port: i64) -> &mut CloudBuilder
{
self.port = port;
self
}
pub fn path(&mut self, path: &str) -> &mut CloudBuilder
{
self.path = path.to_owned();
self
}
pub fn register_procedure(&mut self, register_procedure: &str) -> &mut CloudBuilder
{
self.register_procedure = register_procedure.to_owned();
self
}
pub fn protocol(&mut self, protocol: &str) -> &mut CloudBuilder
{
self.protocol = protocol.to_owned();
self
}
pub fn validate(&mut self) -> Result<&mut CloudBuilder, String>
{
if self.port < 0
{
return Err("Cloud Port cannot be a negative value".to_owned());
}
string_utils::str_to_url(self.domain.as_str())?;
CloudProtocol::value_of(self.protocol.as_str())?;
Ok(self)
}
pub fn finalize(&self) -> Result<Cloud, String>
{
let port = string_utils::i64_to_string(self.port)?;
Ok(Cloud {
domain: self.domain.clone(),
port: port,
path: self.path.clone(),
register_procedure: self.register_procedure.clone(),
protocol: self.protocol.clone(),
})
}
}