2016-03-28 09:34:09 +00:00
|
|
|
mod responder;
|
|
|
|
mod redirect;
|
2016-04-11 09:12:45 +00:00
|
|
|
mod with_status;
|
2016-09-12 01:57:04 +00:00
|
|
|
mod flash;
|
2016-09-12 08:51:02 +00:00
|
|
|
mod named_file;
|
2016-09-12 09:43:34 +00:00
|
|
|
mod stream;
|
2016-03-28 09:34:09 +00:00
|
|
|
|
2016-09-21 03:02:33 +00:00
|
|
|
pub mod data;
|
|
|
|
|
2016-10-25 09:17:49 +00:00
|
|
|
pub use self::responder::{Outcome, Responder};
|
2016-03-28 09:34:09 +00:00
|
|
|
pub use self::redirect::Redirect;
|
2016-04-11 09:12:45 +00:00
|
|
|
pub use self::with_status::StatusResponse;
|
2016-09-12 01:57:04 +00:00
|
|
|
pub use self::flash::Flash;
|
2016-09-12 08:51:02 +00:00
|
|
|
pub use self::named_file::NamedFile;
|
2016-09-12 09:43:34 +00:00
|
|
|
pub use self::stream::Stream;
|
2016-09-25 10:06:02 +00:00
|
|
|
pub use self::data::Content;
|
2016-03-28 09:34:09 +00:00
|
|
|
|
2016-10-25 09:17:49 +00:00
|
|
|
use outcome;
|
2016-10-08 06:20:49 +00:00
|
|
|
use request::Data;
|
2016-10-25 09:17:49 +00:00
|
|
|
use http::hyper::StatusCode;
|
|
|
|
use outcome::Outcome::*;
|
2016-04-11 10:57:23 +00:00
|
|
|
|
2016-10-25 09:17:49 +00:00
|
|
|
pub type Response<'a> = outcome::Outcome<Box<Responder + 'a>, StatusCode, Data>;
|
2016-10-14 01:39:23 +00:00
|
|
|
|
2016-03-28 09:34:09 +00:00
|
|
|
impl<'a> Response<'a> {
|
2016-10-08 06:20:49 +00:00
|
|
|
#[inline(always)]
|
2016-10-14 01:39:23 +00:00
|
|
|
pub fn success<T: Responder + 'a>(responder: T) -> Response<'a> {
|
2016-10-25 09:17:49 +00:00
|
|
|
Success(Box::new(responder))
|
2016-04-11 09:12:45 +00:00
|
|
|
}
|
|
|
|
|
2016-10-08 06:20:49 +00:00
|
|
|
#[inline(always)]
|
2016-10-14 01:39:23 +00:00
|
|
|
pub fn failure(code: StatusCode) -> Response<'static> {
|
2016-10-25 09:17:49 +00:00
|
|
|
Failure(code)
|
2016-04-11 10:57:23 +00:00
|
|
|
}
|
|
|
|
|
2016-10-09 03:53:04 +00:00
|
|
|
#[inline(always)]
|
2016-10-14 01:39:23 +00:00
|
|
|
pub fn forward(data: Data) -> Response<'static> {
|
2016-10-25 09:17:49 +00:00
|
|
|
Forward(data)
|
2016-10-09 03:53:04 +00:00
|
|
|
}
|
|
|
|
|
2016-10-08 06:20:49 +00:00
|
|
|
#[inline(always)]
|
2016-09-30 22:20:11 +00:00
|
|
|
pub fn with_raw_status<T: Responder + 'a>(status: u16, body: T) -> Response<'a> {
|
2016-04-11 09:12:45 +00:00
|
|
|
let status_code = StatusCode::from_u16(status);
|
2016-10-14 01:39:23 +00:00
|
|
|
Response::success(StatusResponse::new(status_code, body))
|
2016-03-28 09:34:09 +00:00
|
|
|
}
|
2016-10-06 07:16:15 +00:00
|
|
|
|
2016-10-08 06:20:49 +00:00
|
|
|
#[doc(hidden)]
|
|
|
|
#[inline(always)]
|
|
|
|
pub fn responder(self) -> Option<Box<Responder + 'a>> {
|
2016-10-14 01:39:23 +00:00
|
|
|
self.succeeded()
|
2016-03-28 09:34:09 +00:00
|
|
|
}
|
|
|
|
}
|