async-http-client-lite 0.1.0

Asynchronous http client.
Documentation
use std::io;

use async_net::{AsyncToSocketAddrs, TcpStream};
use async_trait::async_trait;

use crate::connector::*;

pub struct AsyncNetTcpConnector;

#[async_trait]
impl<A> Connector<TcpStream, A> for AsyncNetTcpConnector
where
    A: AsyncToSocketAddrs + Send + Sync + 'static,
    A::Iter: Send,
{
    async fn connect(
        addr: A,
        client_proxy: Option<ClientProxy>,
        client_tls: Option<ClientTls>,
    ) -> io::Result<Client<ClientInnerStream<TcpStream>>> {
        let stream = TcpStream::connect(addr).await?;

        Client::with(stream, client_proxy, client_tls).await
    }
}

//
//
//
#[cfg(unix)]
mod unix_ {
    use super::*;

    use std::path::Path;

    use async_net::unix::UnixStream;

    pub struct AsyncNetUnixConnector;

    #[async_trait]
    impl<A> Connector<UnixStream, A> for AsyncNetUnixConnector
    where
        A: AsRef<Path> + Send + 'static,
    {
        async fn connect(
            addr: A,
            client_proxy: Option<ClientProxy>,
            client_tls: Option<ClientTls>,
        ) -> io::Result<Client<ClientInnerStream<UnixStream>>> {
            let stream = UnixStream::connect(addr).await?;

            Client::with(stream, client_proxy, client_tls).await
        }
    }
}
#[cfg(unix)]
pub use unix_::*;