1
0
mirror of https://github.com/actix/actix-extras.git synced 2024-11-24 16:02:59 +01:00

Merge pull request #274 from mockersf/user-agent

add default value for header User-Agent in requests
This commit is contained in:
Nikolay Kim 2018-06-04 14:04:52 -07:00 committed by GitHub
commit 67ee24f9a0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 40 additions and 1 deletions

View File

@ -17,6 +17,7 @@
* Use `&mut self` instead of `&self` for Middleware trait * Use `&mut self` instead of `&self` for Middleware trait
* Added header `User-Agent: Actix-web/<current_version>` to default headers when building a request
### Removed ### Removed

View File

@ -506,7 +506,7 @@ impl ClientRequestBuilder {
} }
/// Do not add default request headers. /// Do not add default request headers.
/// By default `Accept-Encoding` header is set. /// By default `Accept-Encoding` and `User-Agent` headers are set.
pub fn no_default_headers(&mut self) -> &mut Self { pub fn no_default_headers(&mut self) -> &mut Self {
self.default_headers = false; self.default_headers = false;
self self
@ -608,6 +608,18 @@ impl ClientRequestBuilder {
} else { } else {
self.header(header::ACCEPT_ENCODING, "gzip, deflate"); self.header(header::ACCEPT_ENCODING, "gzip, deflate");
} }
let contains = if let Some(parts) = parts(&mut self.request, &self.err) {
parts.headers.contains_key(header::USER_AGENT)
} else {
true
};
if !contains {
self.header(
header::USER_AGENT,
concat!("Actix-web/", env!("CARGO_PKG_VERSION")),
);
}
} }
let mut request = self.request.take().expect("cannot reuse request builder"); let mut request = self.request.take().expect("cannot reuse request builder");

View File

@ -432,3 +432,29 @@ fn test_client_cookie_handling() {
let c2 = response.cookie("cookie2").expect("Missing cookie2"); let c2 = response.cookie("cookie2").expect("Missing cookie2");
assert_eq!(c2, &cookie2); assert_eq!(c2, &cookie2);
} }
#[test]
fn test_default_headers() {
let srv = test::TestServer::new(|app| app.handler(|_| HttpResponse::Ok().body(STR)));
let request = srv.get().finish().unwrap();
let repr = format!("{:?}", request);
assert!(repr.contains("\"accept-encoding\": \"gzip, deflate\""));
assert!(repr.contains(concat!(
"\"user-agent\": \"Actix-web/",
env!("CARGO_PKG_VERSION"),
"\""
)));
let request_override = srv.get()
.header("User-Agent", "test")
.finish()
.unwrap();
let repr_override = format!("{:?}", request_override);
assert!(repr_override.contains("\"user-agent\": \"test\""));
assert!(!repr_override.contains(concat!(
"\"user-agent\": \"Actix-web/",
env!("CARGO_PKG_VERSION"),
"\""
)));
}