From f798a8b2df9eea7a14f99024591590f154c1a606 Mon Sep 17 00:00:00 2001 From: Adilson Neto Date: Wed, 24 Apr 2019 21:36:24 -0300 Subject: [PATCH] Remove trailing '?' on empty query. (#506) Closes #464 --- src/async_impl/request.rs | 21 +++++++++++++++++++++ src/request.rs | 21 +++++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/src/async_impl/request.rs b/src/async_impl/request.rs index dff3a6a..431765f 100644 --- a/src/async_impl/request.rs +++ b/src/async_impl/request.rs @@ -267,6 +267,11 @@ impl RequestBuilder { error = Some(::error::from(err)); } } + if let Ok(ref mut req) = self.request { + if let Some("") = req.url().query() { + req.url_mut().set_query(None); + } + } if let Some(err) = error { self.request = Err(err); } @@ -514,6 +519,22 @@ mod tests { assert_eq!(foo[1], "baz"); } + #[test] + fn normalize_empty_query() { + let client = Client::new(); + let some_url = "https://google.com/"; + let empty_query: &[(&str, &str)] = &[]; + + let req = client + .get(some_url) + .query(empty_query) + .build() + .expect("request build"); + + assert_eq!(req.url().query(), None); + assert_eq!(req.url().as_str(), "https://google.com/"); + } + /* use {body, Method}; use super::Client; diff --git a/src/request.rs b/src/request.rs index 31fb26b..1602556 100644 --- a/src/request.rs +++ b/src/request.rs @@ -353,6 +353,11 @@ impl RequestBuilder { error = Some(::error::from(err)); } } + if let Ok(ref mut req) = self.request { + if let Some("") = req.url().query() { + req.url_mut().set_query(None); + } + } if let Some(err) = error { self.request = Err(err); } @@ -837,4 +842,20 @@ mod tests { assert_eq!(foo[0], "bar"); assert_eq!(foo[1], "baz"); } + + #[test] + fn normalize_empty_query() { + let client = Client::new(); + let some_url = "https://google.com/"; + let empty_query: &[(&str, &str)] = &[]; + + let req = client + .get(some_url) + .query(empty_query) + .build() + .expect("request build"); + + assert_eq!(req.url().query(), None); + assert_eq!(req.url().as_str(), "https://google.com/"); + } }