2016-03-28 09:34:09 +00:00
|
|
|
mod empty;
|
|
|
|
mod responder;
|
|
|
|
mod redirect;
|
2016-04-11 09:12:45 +00:00
|
|
|
mod with_status;
|
2016-04-11 10:57:23 +00:00
|
|
|
mod outcome;
|
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-04-01 23:54:53 +00:00
|
|
|
pub use hyper::server::Response as HyperResponse;
|
|
|
|
pub use hyper::net::Fresh as HyperFresh;
|
|
|
|
pub use hyper::status::StatusCode;
|
|
|
|
pub use hyper::header;
|
2016-08-02 02:07:36 +00:00
|
|
|
pub use hyper::mime;
|
2016-04-01 23:54:53 +00:00
|
|
|
|
2016-03-28 09:34:09 +00:00
|
|
|
pub use self::responder::Responder;
|
2016-04-11 10:57:23 +00:00
|
|
|
pub use self::empty::{Empty, Forward};
|
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-04-11 10:57:23 +00:00
|
|
|
pub use self::outcome::Outcome;
|
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
|
|
|
|
|
|
|
use std::ops::{Deref, DerefMut};
|
|
|
|
|
2016-04-11 10:57:23 +00:00
|
|
|
pub type FreshHyperResponse<'a> = HyperResponse<'a, HyperFresh>;
|
|
|
|
|
2016-03-28 09:34:09 +00:00
|
|
|
pub struct Response<'a>(Box<Responder + 'a>);
|
|
|
|
|
|
|
|
impl<'a> Response<'a> {
|
|
|
|
pub fn new<T: Responder + 'a>(body: T) -> Response<'a> {
|
|
|
|
Response(Box::new(body))
|
|
|
|
}
|
|
|
|
|
2016-04-11 09:12:45 +00:00
|
|
|
pub fn with_status<T: Responder + 'a>(status: StatusCode, body: T)
|
|
|
|
-> Response<'a> {
|
|
|
|
Response(Box::new(StatusResponse::new(status, body)))
|
|
|
|
}
|
|
|
|
|
2016-04-11 10:57:23 +00:00
|
|
|
pub fn forward() -> Response<'a> {
|
|
|
|
Response(Box::new(Forward))
|
|
|
|
}
|
|
|
|
|
2016-04-11 09:12:45 +00:00
|
|
|
pub fn with_raw_status<T: Responder + 'a>(status: u16, body: T)
|
|
|
|
-> Response<'a> {
|
|
|
|
let status_code = StatusCode::from_u16(status);
|
|
|
|
Response(Box::new(StatusResponse::new(status_code, body)))
|
|
|
|
}
|
|
|
|
|
2016-03-28 09:34:09 +00:00
|
|
|
pub fn empty() -> Response<'a> {
|
|
|
|
Response(Box::new(Empty::new(StatusCode::Ok)))
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn not_found() -> Response<'a> {
|
|
|
|
Response(Box::new(Empty::new(StatusCode::NotFound)))
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn server_error() -> Response<'a> {
|
|
|
|
Response(Box::new(Empty::new(StatusCode::InternalServerError)))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
impl<'a> Deref for Response<'a> {
|
|
|
|
type Target = Box<Responder + 'a>;
|
|
|
|
|
|
|
|
fn deref(&self) -> &Self::Target {
|
|
|
|
&self.0
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
impl<'a> DerefMut for Response<'a> {
|
|
|
|
fn deref_mut(&mut self) -> &mut Box<Responder + 'a> {
|
|
|
|
&mut self.0
|
|
|
|
}
|
|
|
|
}
|