repeated headers

This commit is contained in:
Martin Algesten
2018-06-11 22:45:09 +02:00
parent 9852960bd7
commit 8bc8559c22
5 changed files with 75 additions and 6 deletions

View File

@@ -177,7 +177,9 @@ impl Request {
K: Into<String>,
V: Into<String>,
{
add_request_header(self, header.into(), value.into());
let s = format!("{}: {}", header.into(), value.into());
let header = s.parse::<Header>().expect("Failed to parse header");
add_header(header, &mut self.headers);
self
}
@@ -208,6 +210,26 @@ impl Request {
self.get(name).is_some()
}
/// All headers corresponding values for the give name, or empty vector.
///
/// ```
/// let req = ureq::get("/my_page")
/// .set("X-Forwarded-For", "1.2.3.4")
/// .set("X-Forwarded-For", "2.3.4.5")
/// .build();
/// assert_eq!(req.get_all("x-forwarded-for"), vec![
/// "1.2.3.4",
/// "2.3.4.5",
/// ]);
/// ```
pub fn get_all<'a>(&self, name: &'a str) -> Vec<&str> {
self.headers
.iter()
.filter(|h| h.is_name(name))
.map(|h| h.value())
.collect()
}
/// Set many headers.
///
/// ```
@@ -234,7 +256,9 @@ impl Request {
I: IntoIterator<Item = (K, V)>,
{
for (k, v) in headers.into_iter() {
add_request_header(self, k.into(), v.into());
let s = format!("{}: {}", k.into(), v.into());
let header = s.parse::<Header>().expect("Failed to parse header");
add_header(header, &mut self.headers);
}
self
}