1
0
mirror of https://github.com/fafhrd91/actix-web synced 2024-11-30 10:42:55 +01:00

try path config from Data as well

This commit is contained in:
Rob Ede 2022-01-04 04:08:46 +00:00
parent c7639bc3be
commit 93754f307f
No known key found for this signature in database
GPG Key ID: 97C636207D3EF933
3 changed files with 15 additions and 2 deletions

View File

@ -40,14 +40,23 @@ impl Directory {
pub(crate) type DirectoryRenderer = pub(crate) type DirectoryRenderer =
dyn Fn(&Directory, &HttpRequest) -> Result<ServiceResponse, io::Error>; 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 { macro_rules! encode_file_url {
($path:ident) => { ($path:ident) => {
utf8_percent_encode(&$path, CONTROLS) utf8_percent_encode(&$path, CONTROLS)
}; };
} }
// " -- &quot; & -- &amp; ' -- &#x27; < -- &lt; > -- &gt; / -- &#x2f; /// Returns HTML entity encoded formatter.
///
/// ```plain
/// " => &quot;
/// & => &amp;
/// ' => &#x27;
/// < => &lt;
/// > => &gt;
/// / => &#x2f;
/// ```
macro_rules! encode_file_name { macro_rules! encode_file_name {
($entry:ident) => { ($entry:ident) => {
escape_html_entity(&$entry.file_name().to_string_lossy(), Html) escape_html_entity(&$entry.file_name().to_string_lossy(), Html)

View File

@ -340,6 +340,7 @@ mod tests {
assert_eq!(q.requote(b"/a%25b%2Bc").unwrap(), "/a%b+c"); 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%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] #[test]

View File

@ -9,6 +9,7 @@ use serde::de;
use crate::{ use crate::{
dev::Payload, dev::Payload,
error::{Error, ErrorNotFound, PathError}, error::{Error, ErrorNotFound, PathError},
web::Data,
FromRequest, HttpRequest, FromRequest, HttpRequest,
}; };
@ -102,6 +103,7 @@ where
fn from_request(req: &HttpRequest, _: &mut Payload) -> Self::Future { fn from_request(req: &HttpRequest, _: &mut Payload) -> Self::Future {
let error_handler = req let error_handler = req
.app_data::<PathConfig>() .app_data::<PathConfig>()
.or_else(|| req.app_data::<Data<PathConfig>>().map(Data::get_ref))
.and_then(|c| c.err_handler.clone()); .and_then(|c| c.err_handler.clone());
ready( ready(
@ -113,6 +115,7 @@ where
Request path: {:?}", Request path: {:?}",
req.path() req.path()
); );
if let Some(error_handler) = error_handler { if let Some(error_handler) = error_handler {
let e = PathError::Deserialize(err); let e = PathError::Deserialize(err);
(error_handler)(e, req) (error_handler)(e, req)