mod server;
mod client;
pub mod http1;
pub mod http2;
mod error;
mod header_helper;
mod http_helper;
mod stream;
pub mod ws;
mod body;
mod send_stream;
mod consts;
mod layer;
mod middle;
mod proxy;
pub mod plugins;
use std::any::Any;
pub use self::body::Body;
pub use self::send_stream::SendStream;
pub use self::stream::MaybeHttpsStream;
pub use self::client::{Client, ClientOption};
pub use self::server::Server;
pub use self::error::{ProtResult, ProtError, Initiator};
pub use self::http2::{Builder, ServerH2Connection, StateHandshake, SendControl};
pub use self::header_helper::HeaderHelper;
pub use self::consts::Consts;
pub use self::http_helper::HttpHelper;
pub use self::layer::{RateLimitLayer, TimeoutLayer, Rate};
pub use self::middle::Middleware;
use webparse::{Request, Response};
pub type RecvRequest = Request<Body>;
pub type RecvResponse = Response<Body>;
use async_trait::async_trait;
#[async_trait]
pub trait HttpTrait: Send + Sync + Any {
async fn operate(&mut self, mut req: RecvRequest) -> ProtResult<RecvResponse>;
async fn middle_operate(&mut self, req: &mut RecvRequest, middles: &mut Vec<Box<dyn Middleware>>) -> ProtResult<()> {
let _req = req;
let _middle = middles;
Ok(())
}
async fn close_connect(&mut self) {
}
fn is_continue_next(&self) -> bool {
true
}
fn as_any(&self) -> Option<&dyn Any> {
None
}
fn as_any_mut(&mut self) -> Option<&mut dyn Any> {
None
}
}