diff --git a/actix-ioframe/README.md b/actix-ioframe/README.md deleted file mode 100644 index f45c590d..00000000 --- a/actix-ioframe/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# actix-ioframe - -**This crate has been deprecated and removed.** diff --git a/router/CHANGES.md b/router/CHANGES.md index 17afeb5b..bb148c87 100644 --- a/router/CHANGES.md +++ b/router/CHANGES.md @@ -1,53 +1,55 @@ # Changes -## [0.2.4] - 2019-12-31 +## Unreleased - 2020-xx-xx + +## 0.2.5 - 2020-09-20 +* Fix `from_hex()` method + + +## 0.2.4 - 2019-12-31 * Add `ResourceDef::resource_path_named()` path generation method -## [0.2.3] - 2019-12-25 +## 0.2.3 - 2019-12-25 * Add impl `IntoPattern` for `&String` -## [0.2.2] - 2019-12-25 +## 0.2.2 - 2019-12-25 * Use `IntoPattern` for `RouterBuilder::path()` -## [0.2.1] - 2019-12-25 +## 0.2.1 - 2019-12-25 * Add `IntoPattern` trait - * Add multi-pattern resources -## [0.2.0] - 2019-12-07 +## 0.2.0 - 2019-12-07 * Update http to 0.2 - * Update regex to 1.3 - * Use bytestring instead of string -## [0.1.5] - 2019-05-15 +## 0.1.5 - 2019-05-15 * Remove debug prints -## [0.1.4] - 2019-05-15 +## 0.1.4 - 2019-05-15 * Fix checked resource match -## [0.1.3] - 2019-04-22 +## 0.1.3 - 2019-04-22 * Added support for `remainder match` (i.e "/path/{tail}*") -## [0.1.2] - 2019-04-07 +## 0.1.2 - 2019-04-07 * Export `Quoter` type - * Allow to reset `Path` instance -## [0.1.1] - 2019-04-03 +## 0.1.1 - 2019-04-03 * Get dynamic segment by name instead of iterator. -## [0.1.0] - 2019-03-09 +## 0.1.0 - 2019-03-09 * Initial release diff --git a/router/Cargo.toml b/router/Cargo.toml index db991e1a..fe553e27 100644 --- a/router/Cargo.toml +++ b/router/Cargo.toml @@ -1,8 +1,8 @@ [package] name = "actix-router" -version = "0.2.4" +version = "0.2.5" authors = ["Nikolay Kim "] -description = "Path router" +description = "Resource path matching library" keywords = ["actix"] homepage = "https://actix.rs" repository = "https://github.com/actix/actix-net.git" @@ -22,7 +22,7 @@ regex = "1.3.1" serde = "1.0.104" bytestring = "0.1.2" log = "0.4.8" -http = { version="0.2.0", optional=true } +http = { version = "0.2.0", optional = true } [dev-dependencies] http = "0.2.0" diff --git a/router/src/de.rs b/router/src/de.rs index 5a45fd51..ce29d2af 100644 --- a/router/src/de.rs +++ b/router/src/de.rs @@ -161,9 +161,7 @@ impl<'de, T: ResourcePath + 'de> Deserializer<'de> for PathDeserializer<'de, T> V: Visitor<'de>, { if self.path.is_empty() { - Err(de::value::Error::custom( - "expeceted at least one parameters", - )) + Err(de::value::Error::custom("expected at least one parameters")) } else { visitor.visit_enum(ValueEnum { value: &self.path[0], diff --git a/router/src/lib.rs b/router/src/lib.rs index f97b34e8..e141d667 100644 --- a/router/src/lib.rs +++ b/router/src/lib.rs @@ -1,4 +1,5 @@ //! Resource path matching library. + mod de; mod path; mod resource; diff --git a/router/src/resource.rs b/router/src/resource.rs index 9ed3ac10..d3b3972d 100644 --- a/router/src/resource.rs +++ b/router/src/resource.rs @@ -155,7 +155,7 @@ impl ResourceDef { } #[inline] - /// Check if path matchs this pattern? + /// Check if path matches this pattern. pub fn is_match(&self, path: &str) -> bool { match self.tp { PatternType::Static(ref s) => s == path, @@ -165,7 +165,7 @@ impl ResourceDef { } } - /// Is prefix path a match against this resource? + /// Is prefix path a match against this resource. pub fn is_prefix_match(&self, path: &str) -> Option { let plen = path.len(); let path = if path.is_empty() { "/" } else { path }; @@ -240,7 +240,7 @@ impl ResourceDef { } } - /// Is the given path and parameters a match against this pattern? + /// Is the given path and parameters a match against this pattern. pub fn match_path(&self, path: &mut Path) -> bool { match self.tp { PatternType::Static(ref s) => { @@ -875,7 +875,7 @@ mod tests { } #[test] - fn test_reousrce_prefix_dynamic() { + fn test_resource_prefix_dynamic() { let re = ResourceDef::prefix("/{name}/"); assert!(re.is_match("/name/")); assert!(re.is_match("/name/gs")); diff --git a/router/src/url.rs b/router/src/url.rs index 189a9e80..6a4195b8 100644 --- a/router/src/url.rs +++ b/router/src/url.rs @@ -186,7 +186,7 @@ fn from_hex(v: u8) -> Option { Some(v - 0x30) // ord('0') == 0x30 } else if v >= b'A' && v <= b'F' { Some(v - 0x41 + 10) // ord('A') == 0x41 - } else if v > b'a' && v <= b'f' { + } else if v >= b'a' && v <= b'f' { Some(v - 0x61 + 10) // ord('a') == 0x61 } else { None @@ -225,4 +225,25 @@ mod tests { assert!(re.match_path(&mut path)); assert_eq!(path.get("id").unwrap(), "qwe%rty"); } + + #[test] + fn test_from_hex() { + let hex = b"0123456789abcdefABCDEF"; + + for i in 0..256 { + let c = i as u8; + if hex.contains(&c) { + assert!(from_hex(c).is_some()) + } else { + assert!(from_hex(c).is_none()) + } + } + + let expected = [ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 10, 11, 12, 13, 14, 15, + ]; + for i in 0..hex.len() { + assert_eq!(from_hex(hex[i]).unwrap(), expected[i]); + } + } }