#[derive(Debug, Default)]
pub struct KillerBuilder {
id: String,
signal: Option<String>,
}
#[derive(Debug)]
pub struct Killer {
id: String,
signal: Option<String>,
}
impl Killer {
pub fn new() -> KillerBuilder {
KillerBuilder::default()
}
pub fn get_path(&self) -> String {
let mut path = format!("/containers/{}/kill?", self.id);
if self.signal.is_some() {
path.push_str(format!("signal={}&", self.signal.clone().unwrap()).as_str());
}
path.pop();
path
}
}
impl KillerBuilder {
pub fn new() -> Self {
KillerBuilder::default()
}
pub fn id<T>(&mut self, id: T) -> &mut KillerBuilder
where T: Into<String>
{
self.id = id.into();
self
}
pub fn signal<T>(&mut self, signal: T) -> &mut KillerBuilder
where T: Into<String>
{
self.signal = Some(signal.into());
self
}
pub fn build(&self) -> Killer {
Killer {
id: self.id.clone(),
signal: self.signal.clone()
}
}
}