docker_client 0.1.0-alpha1

docker-client library
Documentation
use std::collections::HashMap;
use std::borrow::Borrow;

#[derive(Debug, Default)]
pub struct URIBuilder {
    url: String,
    params: HashMap<String, String>,
}

#[derive(Debug, Default, Clone)]
pub struct URI {
    url: String,
    params: HashMap<String, String>,
}

impl URIBuilder {
    pub fn new() -> Self {
        URIBuilder::default()
    }

    pub fn url<T>(&mut self, url: T) -> &mut Self
        where T: Into<String> {
        self.url = url.into();

        self
    }

    pub fn parameter<T, P>(&mut self, key: T, value: P) -> &mut Self
        where
            T: Into<String>,
            P: Into<String>
    {

        self.params.insert(key.into(), value.into());

        self
    }

    pub fn build(&self) -> URI {
        URI {
            url: self.url.clone(),
            params: self.params.clone(),
        }
    }
}

impl URI {

    pub fn new() -> URIBuilder {
        URIBuilder::default()
    }

    pub fn with_path<T>(url: T) -> URIBuilder
        where T: Into<String> {

        let mut builder = URIBuilder::default();
        builder.url = url.into();
        builder
    }

}

impl ToString for URI {
    fn to_string(&self) -> String {
        let mut url = self.url.clone();

        let params = self.params.borrow();

        url.push('?');
        for (k, v) in params {
            url.push_str(format!("{}={}&", k, v).as_str());
        }

        url.pop();

        url
    }
}