reqwest_proxy 0.1.7

Seamlessly proxy reqwest traffic through Shadowsocks, Hysteria2, and more. / 通过 Shadowsocks、Hysteria2 等多种协议无缝代理 reqwest 流量。
#![cfg_attr(docsrs, feature(doc_cfg))]
#![feature(doc_cfg)]

mod error;
mod stream;
mod traits;
pub use error::Error;
pub use stream::Stream;
pub use traits::{Conn, StreamTrait};
pub type Result<T> = std::result::Result<T, Error>;

#[cfg(feature = "reqwest")]
pub mod util;

#[cfg(feature = "reqwest")]
mod middleware;
#[cfg(feature = "reqwest")]
pub use middleware::ProxyMiddleware;

#[cfg(all(feature = "reqwest", feature = "protocol"))]
pub(crate) mod macro_enums;

#[cfg(feature = "protocol")]
pub(crate) mod macro_conn;

macro_rules! init {
  ($($name:ident, $name_str:literal);+) => {
    $(
      #[cfg(feature = $name_str)]
      pub mod $name;
    )+

    #[cfg(feature = "protocol")]
    crate::conn!($($name, $name_str);+);

    #[cfg(all(feature = "reqwest", feature = "protocol"))]
    mod enums {
      $crate::enums!($($name,$name_str);+);
    }
  }
}

init!(shadowsocks, "shadowsocks";  hysteria2, "hysteria2");

#[cfg(all(feature = "reqwest", feature = "protocol"))]
pub use enums::{ConnFuture, Proxy, ProxyConn, StreamEnum};