mirror of
https://github.com/fafhrd91/actix-web
synced 2024-11-27 17:52:56 +01:00
try path config from Data as well
This commit is contained in:
parent
c7639bc3be
commit
93754f307f
@ -40,14 +40,23 @@ impl Directory {
|
||||
pub(crate) type DirectoryRenderer =
|
||||
dyn Fn(&Directory, &HttpRequest) -> Result<ServiceResponse, io::Error>;
|
||||
|
||||
// show file url as relative to static path
|
||||
/// Returns percent encoded file URL path.
|
||||
macro_rules! encode_file_url {
|
||||
($path:ident) => {
|
||||
utf8_percent_encode(&$path, CONTROLS)
|
||||
};
|
||||
}
|
||||
|
||||
// " -- " & -- & ' -- ' < -- < > -- > / -- /
|
||||
/// Returns HTML entity encoded formatter.
|
||||
///
|
||||
/// ```plain
|
||||
/// " => "
|
||||
/// & => &
|
||||
/// ' => '
|
||||
/// < => <
|
||||
/// > => >
|
||||
/// / => /
|
||||
/// ```
|
||||
macro_rules! encode_file_name {
|
||||
($entry:ident) => {
|
||||
escape_html_entity(&$entry.file_name().to_string_lossy(), Html)
|
||||
|
@ -340,6 +340,7 @@ mod tests {
|
||||
assert_eq!(q.requote(b"/a%25b%2Bc").unwrap(), "/a%b+c");
|
||||
assert_eq!(q.requote(b"/a%2fb").unwrap(), "/a%2fb");
|
||||
assert_eq!(q.requote(b"/a%2Fb").unwrap(), "/a%2Fb");
|
||||
assert_eq!(q.requote(b"/a%0Ab").unwrap(), "/a\nb");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -9,6 +9,7 @@ use serde::de;
|
||||
use crate::{
|
||||
dev::Payload,
|
||||
error::{Error, ErrorNotFound, PathError},
|
||||
web::Data,
|
||||
FromRequest, HttpRequest,
|
||||
};
|
||||
|
||||
@ -102,6 +103,7 @@ where
|
||||
fn from_request(req: &HttpRequest, _: &mut Payload) -> Self::Future {
|
||||
let error_handler = req
|
||||
.app_data::<PathConfig>()
|
||||
.or_else(|| req.app_data::<Data<PathConfig>>().map(Data::get_ref))
|
||||
.and_then(|c| c.err_handler.clone());
|
||||
|
||||
ready(
|
||||
@ -113,6 +115,7 @@ where
|
||||
Request path: {:?}",
|
||||
req.path()
|
||||
);
|
||||
|
||||
if let Some(error_handler) = error_handler {
|
||||
let e = PathError::Deserialize(err);
|
||||
(error_handler)(e, req)
|
||||
|
Loading…
Reference in New Issue
Block a user