fussybeaver / bollard

Docker daemon API in Rust

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Add a `Docker::connect_with_url()` method

xfbs opened this issue · comments

Could we have a connect_with_url() method? I'm thinking to basically move use what you are doing in connect_with_defaults, and then call this method from connect with defaults().

    pub fn connect_with_defaults() -> Result<Docker, Error> {
        let host = env::var("DOCKER_HOST").unwrap_or_else(|_| DEFAULT_DOCKER_HOST.to_string());
        Self::connect_with_url(host)
    }

    pub fn connect_with_url(host: &str) -> Result<Docker, Error> {
        match host {
            #[cfg(unix)]
            h if h.starts_with("unix://") => {
                Docker::connect_with_unix(&h, DEFAULT_TIMEOUT, API_DEFAULT_VERSION)
            }
            #[cfg(windows)]
            h if h.starts_with("npipe://") => {
                Docker::connect_with_named_pipe(&h, DEFAULT_TIMEOUT, API_DEFAULT_VERSION)
            }
            h if h.starts_with("tcp://") || h.starts_with("http://") => {
                #[cfg(feature = "ssl")]
                if env::var("DOCKER_TLS_VERIFY").is_ok() {
                    return Docker::connect_with_ssl_defaults();
                }
                Docker::connect_with_http_defaults()
            }
            #[cfg(feature = "ssl")]
            h if h.starts_with("https://") => Docker::connect_with_ssl_defaults(),
            _ => Err(UnsupportedURISchemeError {
                uri: host.to_string(),
            }),
        }
    }

We recently added a connect_with_defaults method which sources that DOCKER_HOST environment variable

pub fn connect_with_defaults() -> Result<Docker, Error> {
. I'd be happy for a PR that extends or refactors this method to accept a connect_with_url invocation

Hi, jumping here because I'm also interested in this issue. It would be nice to allow setting headers as well to set custom User-Agent from clients consuming the library. It would be even much better to accept a http request to make the client fully configurable.