aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Walters <rwalters@digitalstirling.com>2020-10-15 12:44:14 -0700
committerRichard Walters <rwalters@digitalstirling.com>2020-10-15 12:44:14 -0700
commit170b711d710a0572fbd396c29be6647a5dcf3836 (patch)
treea44d522584e303114d5d7ec140069b295f28e546
parent96d8c0d50c3c583a0cfaab749bf73743de1afe9c (diff)
Version 1.0.1
* Fixed bug in percent encoding of characters \x0 through \xF where they were encoded as "%0" through "%F" rather than "%00" through "%0F".
-rw-r--r--Cargo.toml2
-rw-r--r--src/codec.rs2
-rw-r--r--src/uri.rs12
3 files changed, 14 insertions, 2 deletions
diff --git a/Cargo.toml b/Cargo.toml
index a3a5af0..34dc7cf 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "rhymuri"
-version = "1.0.0"
+version = "1.0.1"
description = "Implementation of IETF RFC 3986, Uniform Resource Identifier (URI)"
authors = ["Richard Walters <rwalters@digitalstirling.com>"]
edition = "2018"
diff --git a/src/codec.rs b/src/codec.rs
index 22d9000..05fcee8 100644
--- a/src/codec.rs
+++ b/src/codec.rs
@@ -47,7 +47,7 @@ pub fn encode_element(
.map(|ci| {
match char::try_from(*ci) {
Ok(c) if allowed_characters.contains(&c) => c.to_string(),
- _ => format!("%{:X}", ci),
+ _ => format!("%{:02X}", ci),
}
})
.collect()
diff --git a/src/uri.rs b/src/uri.rs
index b9e7266..b49cb96 100644
--- a/src/uri.rs
+++ b/src/uri.rs
@@ -1485,6 +1485,18 @@ mod tests {
}
#[test]
+ fn percent_encode_characters_with_two_digits_always() {
+ for ci in 0_u8..31_u8 {
+ let mut uri = Uri::default();
+ uri.set_query(Some(vec![ci]));
+ assert_eq!(
+ uri.to_string(),
+ format!("?%{:02X}", ci)
+ );
+ }
+ }
+
+ #[test]
fn set_illegal_schemes() {
let test_vectors = [
"ab_de",