1
0
mirror of https://github.com/fafhrd91/actix-web synced 2025-08-23 22:15:13 +02:00

refactor Middleware trait, use Result

This commit is contained in:
Nikolay Kim
2018-01-09 22:48:35 -08:00
parent 16310a5ebd
commit ce78f17a79
9 changed files with 66 additions and 69 deletions

View File

@@ -1,7 +1,7 @@
//! Middlewares
use futures::Future;
use error::Error;
use error::{Error, Result};
use httprequest::HttpRequest;
use httpresponse::HttpResponse;
@@ -18,8 +18,6 @@ pub use self::session::{RequestSession, Session, SessionImpl, SessionBackend, Se
pub enum Started {
/// Execution completed
Done,
/// Moddleware error
Err(Error),
/// New http response got generated. If middleware generates response
/// handler execution halts.
Response(HttpResponse),
@@ -29,8 +27,6 @@ pub enum Started {
/// Middleware execution result
pub enum Response {
/// Moddleware error
Err(Error),
/// New http response got generated
Done(HttpResponse),
/// Result is a future that resolves to a new http response
@@ -51,14 +47,14 @@ pub trait Middleware<S>: 'static {
/// Method is called when request is ready. It may return
/// future, which should resolve before next middleware get called.
fn start(&self, req: &mut HttpRequest<S>) -> Started {
Started::Done
fn start(&self, req: &mut HttpRequest<S>) -> Result<Started> {
Ok(Started::Done)
}
/// Method is called when handler returns response,
/// but before sending http message to peer.
fn response(&self, req: &mut HttpRequest<S>, resp: HttpResponse) -> Response {
Response::Done(resp)
fn response(&self, req: &mut HttpRequest<S>, resp: HttpResponse) -> Result<Response> {
Ok(Response::Done(resp))
}
/// Method is called after body stream get sent to peer.