mirror of https://github.com/rwf2/Rocket.git
Make '&Host' a request guard.
This commit is contained in:
parent
c58b43700c
commit
2cee4b4594
|
@ -5,7 +5,8 @@ use crate::{Request, Route};
|
||||||
use crate::outcome::{self, IntoOutcome};
|
use crate::outcome::{self, IntoOutcome};
|
||||||
use crate::outcome::Outcome::*;
|
use crate::outcome::Outcome::*;
|
||||||
|
|
||||||
use crate::http::{Status, ContentType, Accept, Method, CookieJar, uri::Origin};
|
use crate::http::{Status, ContentType, Accept, Method, CookieJar};
|
||||||
|
use crate::http::uri::{Host, Origin};
|
||||||
|
|
||||||
/// Type alias for the `Outcome` of a `FromRequest` conversion.
|
/// Type alias for the `Outcome` of a `FromRequest` conversion.
|
||||||
pub type Outcome<S, E> = outcome::Outcome<S, (Status, E), ()>;
|
pub type Outcome<S, E> = outcome::Outcome<S, (Status, E), ()>;
|
||||||
|
@ -129,6 +130,10 @@ impl<S, E> IntoOutcome<S, (Status, E), ()> for Result<S, E> {
|
||||||
///
|
///
|
||||||
/// _This implementation always returns successfully._
|
/// _This implementation always returns successfully._
|
||||||
///
|
///
|
||||||
|
/// * **&Host**
|
||||||
|
///
|
||||||
|
/// Extracts the [`Host`] from the incoming request.
|
||||||
|
///
|
||||||
/// * **&Route**
|
/// * **&Route**
|
||||||
///
|
///
|
||||||
/// Extracts the [`Route`] from the request if one is available. If a route
|
/// Extracts the [`Route`] from the request if one is available. If a route
|
||||||
|
@ -401,6 +406,18 @@ impl<'r> FromRequest<'r> for &'r Origin<'r> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[crate::async_trait]
|
||||||
|
impl<'r> FromRequest<'r> for &'r Host<'r> {
|
||||||
|
type Error = std::convert::Infallible;
|
||||||
|
|
||||||
|
async fn from_request(request: &'r Request<'_>) -> Outcome<Self, Self::Error> {
|
||||||
|
match request.host() {
|
||||||
|
Some(host) => Success(host),
|
||||||
|
None => Forward(())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[crate::async_trait]
|
#[crate::async_trait]
|
||||||
impl<'r> FromRequest<'r> for &'r Route {
|
impl<'r> FromRequest<'r> for &'r Route {
|
||||||
type Error = std::convert::Infallible;
|
type Error = std::convert::Infallible;
|
||||||
|
|
Loading…
Reference in New Issue