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-08-07 06:14:05 +00:00
|
|
|
mod cookied;
|
2016-08-27 01:37:28 +00:00
|
|
|
mod data_type;
|
2016-03-28 09:34:09 +00:00
|
|
|
|
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-08-27 01:37:28 +00:00
|
|
|
pub use self::data_type::*;
|
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-08-07 06:14:05 +00:00
|
|
|
pub use self::cookied::Cookied;
|
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
|
|
|
|
}
|
|
|
|
}
|