mod responder;
mod redirect;
mod with_status;
mod flash;
mod named_file;
mod stream;
mod failure;
pub mod data;
pub use self::responder::Responder;
pub use self::redirect::Redirect;
pub use self::with_status::StatusResponse;
pub use self::flash::Flash;
pub use self::named_file::NamedFile;
pub use self::stream::Stream;
pub use self::data::Content;
pub use self::failure::Failure;
pub use outcome::Outcome;
use request::Data;
use http::hyper::{StatusCode, FreshHyperResponse};
pub type ResponseOutcome<'a> = Outcome<(), (), (StatusCode, FreshHyperResponse<'a>)>;
impl<'a> ResponseOutcome<'a> {
#[inline(always)]
pub fn of(result: Result) -> Self {
match result {
Ok(_) => Outcome::Success(()),
Err(_) => Outcome::Failure(())
}
}
#[inline(always)]
pub fn success() -> ResponseOutcome<'a> {
Outcome::Success(())
}
#[inline(always)]
pub fn failure() -> ResponseOutcome<'a> {
Outcome::Failure(())
}
#[inline(always)]
pub fn forward(s: StatusCode, r: FreshHyperResponse<'a>) -> ResponseOutcome<'a> {
Outcome::Forward((s, r))
}
}
pub type Response<'a> = Outcome, StatusCode, Data>;
impl<'a> Response<'a> {
#[inline(always)]
pub fn success(responder: T) -> Response<'a> {
Outcome::Success(Box::new(responder))
}
#[inline(always)]
pub fn failure(code: StatusCode) -> Response<'static> {
Outcome::Failure(code)
}
#[inline(always)]
pub fn forward(data: Data) -> Response<'static> {
Outcome::Forward(data)
}
#[inline(always)]
pub fn with_raw_status(status: u16, body: T) -> Response<'a> {
let status_code = StatusCode::from_u16(status);
Response::success(StatusResponse::new(status_code, body))
}
#[doc(hidden)]
#[inline(always)]
pub fn responder(self) -> Option> {
self.succeeded()
}
}