From e5ca2717641e95ad3e2e29e542840123dc5c46fa Mon Sep 17 00:00:00 2001 From: nujz Date: Mon, 21 Sep 2020 01:04:18 +0800 Subject: [PATCH 1/3] actix-router: fix from_hex error (#196) --- router/CHANGES.md | 4 ++++ router/src/url.rs | 23 ++++++++++++++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/router/CHANGES.md b/router/CHANGES.md index 17afeb5b..5b249f9f 100644 --- a/router/CHANGES.md +++ b/router/CHANGES.md @@ -1,5 +1,9 @@ # Changes +## Unreleased - 2020-xx-xx + +* Fix `from_hex()` method + ## [0.2.4] - 2019-12-31 * Add `ResourceDef::resource_path_named()` path generation method 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]); + } + } } From 6c65e2a79fd4972ef34e12353ed7c26f0058dc3a Mon Sep 17 00:00:00 2001 From: Rob Ede Date: Mon, 21 Sep 2020 22:46:59 +0100 Subject: [PATCH 2/3] prepare router 0.2.5 release (#198) --- router/CHANGES.md | 28 +++++++++++++--------------- router/Cargo.toml | 6 +++--- router/src/de.rs | 4 +--- router/src/lib.rs | 1 + router/src/resource.rs | 8 ++++---- 5 files changed, 22 insertions(+), 25 deletions(-) diff --git a/router/CHANGES.md b/router/CHANGES.md index 5b249f9f..bb148c87 100644 --- a/router/CHANGES.md +++ b/router/CHANGES.md @@ -2,56 +2,54 @@ ## Unreleased - 2020-xx-xx + +## 0.2.5 - 2020-09-20 * Fix `from_hex()` method -## [0.2.4] - 2019-12-31 +## 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")); From 242bef269ffa74448bcd4ac0fffc308ee881c299 Mon Sep 17 00:00:00 2001 From: Rob Ede Date: Tue, 22 Sep 2020 12:29:07 +0100 Subject: [PATCH 3/3] delete ioframe removed package readme closes #199 --- actix-ioframe/README.md | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 actix-ioframe/README.md 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.**