mirror of https://github.com/fafhrd91/actix-web
update changelog
This commit is contained in:
parent
d3dfac68d4
commit
78f5b940e6
|
@ -1,10 +1,10 @@
|
||||||
# Changes
|
# Changes
|
||||||
|
|
||||||
## Unreleased - 2021-xx-xx
|
## Unreleased - 2021-xx-xx
|
||||||
- `PathDeserializer` now decodes all percent encoded characters in dynamic segments. [#????]
|
- `PathDeserializer` now decodes all percent encoded characters in dynamic segments. [#2566]
|
||||||
- Minimum supported Rust version (MSRV) is now 1.54.
|
- Minimum supported Rust version (MSRV) is now 1.54.
|
||||||
|
|
||||||
[#????]: https://github.com/actix/actix-net/pull/????
|
[#2566]: https://github.com/actix/actix-net/pull/2566
|
||||||
|
|
||||||
|
|
||||||
## 0.5.0-beta.3 - 2021-12-17
|
## 0.5.0-beta.3 - 2021-12-17
|
||||||
|
|
|
@ -48,6 +48,25 @@ macro_rules! parse_single_value {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
macro_rules! parse_value {
|
||||||
|
($trait_fn:ident, $visit_fn:ident, $tp:tt) => {
|
||||||
|
fn $trait_fn<V>(self, visitor: V) -> Result<V::Value, Self::Error>
|
||||||
|
where
|
||||||
|
V: Visitor<'de>,
|
||||||
|
{
|
||||||
|
let decoded = FULL_QUOTER
|
||||||
|
.with(|q| q.requote(self.value.as_bytes()))
|
||||||
|
.unwrap_or_else(|| self.value.to_owned());
|
||||||
|
|
||||||
|
let v = decoded.parse().map_err(|_| {
|
||||||
|
de::value::Error::custom(format!("can not parse {:?} to a {}", self.value, $tp))
|
||||||
|
})?;
|
||||||
|
|
||||||
|
visitor.$visit_fn(v)
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
pub struct PathDeserializer<'de, T: ResourcePath> {
|
pub struct PathDeserializer<'de, T: ResourcePath> {
|
||||||
path: &'de Path<T>,
|
path: &'de Path<T>,
|
||||||
}
|
}
|
||||||
|
@ -175,27 +194,6 @@ impl<'de, T: ResourcePath + 'de> Deserializer<'de> for PathDeserializer<'de, T>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn deserialize_str<V>(self, visitor: V) -> Result<V::Value, Self::Error>
|
|
||||||
where
|
|
||||||
V: Visitor<'de>,
|
|
||||||
{
|
|
||||||
if self.path.segment_count() != 1 {
|
|
||||||
Err(de::value::Error::custom(
|
|
||||||
format!(
|
|
||||||
"wrong number of parameters: {} expected 1",
|
|
||||||
self.path.segment_count()
|
|
||||||
)
|
|
||||||
.as_str(),
|
|
||||||
))
|
|
||||||
} else {
|
|
||||||
let decoded = FULL_QUOTER
|
|
||||||
.with(|q| q.requote(self.path[0].as_bytes()))
|
|
||||||
.unwrap_or_else(|| self.path[0].to_owned());
|
|
||||||
|
|
||||||
visitor.visit_str(&decoded)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn deserialize_seq<V>(self, visitor: V) -> Result<V::Value, Self::Error>
|
fn deserialize_seq<V>(self, visitor: V) -> Result<V::Value, Self::Error>
|
||||||
where
|
where
|
||||||
V: Visitor<'de>,
|
V: Visitor<'de>,
|
||||||
|
@ -222,6 +220,7 @@ impl<'de, T: ResourcePath + 'de> Deserializer<'de> for PathDeserializer<'de, T>
|
||||||
parse_single_value!(deserialize_u64, visit_u64, "u64");
|
parse_single_value!(deserialize_u64, visit_u64, "u64");
|
||||||
parse_single_value!(deserialize_f32, visit_f32, "f32");
|
parse_single_value!(deserialize_f32, visit_f32, "f32");
|
||||||
parse_single_value!(deserialize_f64, visit_f64, "f64");
|
parse_single_value!(deserialize_f64, visit_f64, "f64");
|
||||||
|
parse_single_value!(deserialize_str, visit_string, "String");
|
||||||
parse_single_value!(deserialize_string, visit_string, "String");
|
parse_single_value!(deserialize_string, visit_string, "String");
|
||||||
parse_single_value!(deserialize_byte_buf, visit_string, "String");
|
parse_single_value!(deserialize_byte_buf, visit_string, "String");
|
||||||
parse_single_value!(deserialize_char, visit_char, "char");
|
parse_single_value!(deserialize_char, visit_char, "char");
|
||||||
|
@ -286,25 +285,6 @@ impl<'de> Deserializer<'de> for Key<'de> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
macro_rules! parse_value {
|
|
||||||
($trait_fn:ident, $visit_fn:ident, $tp:tt) => {
|
|
||||||
fn $trait_fn<V>(self, visitor: V) -> Result<V::Value, Self::Error>
|
|
||||||
where
|
|
||||||
V: Visitor<'de>,
|
|
||||||
{
|
|
||||||
let decoded = FULL_QUOTER
|
|
||||||
.with(|q| q.requote(self.value.as_bytes()))
|
|
||||||
.unwrap_or_else(|| self.value.to_owned());
|
|
||||||
|
|
||||||
let v = decoded.parse().map_err(|_| {
|
|
||||||
de::value::Error::custom(format!("can not parse {:?} to a {}", self.value, $tp))
|
|
||||||
})?;
|
|
||||||
|
|
||||||
visitor.$visit_fn(v)
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
struct Value<'de> {
|
struct Value<'de> {
|
||||||
value: &'de str,
|
value: &'de str,
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue