leyline-http 0.1.1

HTTP client that mimics browsers on the wire
Documentation
use std::fmt;

use super::{WsConnection, WsInner, WsSink, WsSinkInner, WsStream, WsStreamInner};
use crate::HttpVersion;
use crate::trace::masked;

impl WsInner {
    fn version(&self) -> HttpVersion {
        match self {
            Self::H1(_) => HttpVersion::Http1_1,
            Self::H2(_) => HttpVersion::Http2,
        }
    }
}

impl fmt::Debug for WsConnection {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        f.debug_struct("WsConnection")
            .field("transport", &self.inner.version())
            .field("protocol", &self.protocol)
            .field(
                "headers",
                &masked(self.headers.iter().map(|(k, v)| (k.as_str(), v.as_bytes()))),
            )
            .finish_non_exhaustive()
    }
}

impl fmt::Debug for WsSink {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        let transport = match &self.inner {
            WsSinkInner::H1(_) => HttpVersion::Http1_1,
            WsSinkInner::H2(_) => HttpVersion::Http2,
        };
        f.debug_struct("WsSink")
            .field("transport", &transport)
            .finish_non_exhaustive()
    }
}

impl fmt::Debug for WsStream {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        let transport = match &self.inner {
            WsStreamInner::H1(_) => HttpVersion::Http1_1,
            WsStreamInner::H2(_) => HttpVersion::Http2,
        };
        f.debug_struct("WsStream")
            .field("transport", &transport)
            .finish_non_exhaustive()
    }
}