mirror of
https://github.com/actix/actix-web.git
synced 2024-11-25 19:11:10 +00:00
add GuardContext::header
(#2569)
This commit is contained in:
parent
fe0bbfb3da
commit
4ebf16890d
3 changed files with 30 additions and 6 deletions
10
CHANGES.md
10
CHANGES.md
|
@ -1,10 +1,14 @@
|
||||||
# Changes
|
# Changes
|
||||||
|
|
||||||
## Unreleased - 2021-xx-xx
|
## Unreleased - 2021-xx-xx
|
||||||
### Changed
|
### Added
|
||||||
- `HttpResponse` can now be used as a `Responder` with any body type.
|
- `GuardContext::header` [#2569]
|
||||||
|
|
||||||
[#2501]: https://github.com/actix/actix-web/pull/2501
|
### Changed
|
||||||
|
- `HttpResponse` can now be used as a `Responder` with any body type. [#2567]
|
||||||
|
|
||||||
|
[#2567]: https://github.com/actix/actix-web/pull/2567
|
||||||
|
[#2569]: https://github.com/actix/actix-web/pull/2569
|
||||||
|
|
||||||
|
|
||||||
## 4.0.0-beta.19 - 2022-01-04
|
## 4.0.0-beta.19 - 2022-01-04
|
||||||
|
|
22
src/guard.rs
22
src/guard.rs
|
@ -54,7 +54,7 @@ use std::{
|
||||||
|
|
||||||
use actix_http::{header, uri::Uri, Extensions, Method as HttpMethod, RequestHead};
|
use actix_http::{header, uri::Uri, Extensions, Method as HttpMethod, RequestHead};
|
||||||
|
|
||||||
use crate::service::ServiceRequest;
|
use crate::{http::header::Header, service::ServiceRequest};
|
||||||
|
|
||||||
/// Provides access to request parts that are useful during routing.
|
/// Provides access to request parts that are useful during routing.
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
|
@ -80,6 +80,26 @@ impl<'a> GuardContext<'a> {
|
||||||
pub fn req_data_mut(&self) -> RefMut<'a, Extensions> {
|
pub fn req_data_mut(&self) -> RefMut<'a, Extensions> {
|
||||||
self.req.req_data_mut()
|
self.req.req_data_mut()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Extracts a typed header from the request.
|
||||||
|
///
|
||||||
|
/// Returns `None` if parsing `H` fails.
|
||||||
|
///
|
||||||
|
/// # Examples
|
||||||
|
/// ```
|
||||||
|
/// use actix_web::{guard::fn_guard, http::header};
|
||||||
|
///
|
||||||
|
/// let image_accept_guard = fn_guard(|ctx| {
|
||||||
|
/// match ctx.header::<header::Accept>() {
|
||||||
|
/// Some(hdr) => hdr.preference() == "image/*",
|
||||||
|
/// None => false,
|
||||||
|
/// }
|
||||||
|
/// });
|
||||||
|
/// ```
|
||||||
|
#[inline]
|
||||||
|
pub fn header<H: Header>(&self) -> Option<H> {
|
||||||
|
H::parse(self.req).ok()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Interface for routing guards.
|
/// Interface for routing guards.
|
||||||
|
|
|
@ -2,10 +2,10 @@ use std::cmp::Ordering;
|
||||||
|
|
||||||
use mime::Mime;
|
use mime::Mime;
|
||||||
|
|
||||||
use super::QualityItem;
|
use super::{common_header, QualityItem};
|
||||||
use crate::http::header;
|
use crate::http::header;
|
||||||
|
|
||||||
crate::http::header::common_header! {
|
common_header! {
|
||||||
/// `Accept` header, defined
|
/// `Accept` header, defined
|
||||||
/// in [RFC 7231 §5.3.2](https://datatracker.ietf.org/doc/html/rfc7231#section-5.3.2)
|
/// in [RFC 7231 §5.3.2](https://datatracker.ietf.org/doc/html/rfc7231#section-5.3.2)
|
||||||
///
|
///
|
||||||
|
|
Loading…
Reference in a new issue