mirror of https://github.com/fafhrd91/actix-web
Remove special casing for empty cookie list
The cookie crate already does that, so no need for actix-web to do it.
This commit is contained in:
parent
68cd5bdf68
commit
dc045f0a13
|
@ -131,7 +131,7 @@ impl ClientRequest {
|
||||||
ClientRequestBuilder {
|
ClientRequestBuilder {
|
||||||
request: Some(ClientRequest::default()),
|
request: Some(ClientRequest::default()),
|
||||||
err: None,
|
err: None,
|
||||||
cookies: None,
|
cookies: CookieJar::new(),
|
||||||
default_headers: true,
|
default_headers: true,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -274,7 +274,7 @@ impl fmt::Debug for ClientRequest {
|
||||||
pub struct ClientRequestBuilder {
|
pub struct ClientRequestBuilder {
|
||||||
request: Option<ClientRequest>,
|
request: Option<ClientRequest>,
|
||||||
err: Option<HttpError>,
|
err: Option<HttpError>,
|
||||||
cookies: Option<CookieJar>,
|
cookies: CookieJar,
|
||||||
default_headers: bool,
|
default_headers: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -496,13 +496,7 @@ impl ClientRequestBuilder {
|
||||||
/// }
|
/// }
|
||||||
/// ```
|
/// ```
|
||||||
pub fn cookie<'c>(&mut self, cookie: Cookie<'c>) -> &mut Self {
|
pub fn cookie<'c>(&mut self, cookie: Cookie<'c>) -> &mut Self {
|
||||||
if self.cookies.is_none() {
|
self.cookies.add(cookie.into_owned());
|
||||||
let mut jar = CookieJar::new();
|
|
||||||
jar.add(cookie.into_owned());
|
|
||||||
self.cookies = Some(jar)
|
|
||||||
} else {
|
|
||||||
self.cookies.as_mut().unwrap().add(cookie.into_owned());
|
|
||||||
}
|
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -626,13 +620,13 @@ impl ClientRequestBuilder {
|
||||||
let mut request = self.request.take().expect("cannot reuse request builder");
|
let mut request = self.request.take().expect("cannot reuse request builder");
|
||||||
|
|
||||||
// set cookies
|
// set cookies
|
||||||
if let Some(ref mut jar) = self.cookies {
|
let mut cookie = String::new();
|
||||||
let mut cookie = String::new();
|
for c in self.cookies.delta() {
|
||||||
for c in jar.delta() {
|
let name = percent_encode(c.name().as_bytes(), USERINFO_ENCODE_SET);
|
||||||
let name = percent_encode(c.name().as_bytes(), USERINFO_ENCODE_SET);
|
let value = percent_encode(c.value().as_bytes(), USERINFO_ENCODE_SET);
|
||||||
let value = percent_encode(c.value().as_bytes(), USERINFO_ENCODE_SET);
|
let _ = write!(&mut cookie, "; {}={}", name, value);
|
||||||
let _ = write!(&mut cookie, "; {}={}", name, value);
|
}
|
||||||
}
|
if !cookie.is_empty() {
|
||||||
request.headers.insert(
|
request.headers.insert(
|
||||||
header::COOKIE,
|
header::COOKIE,
|
||||||
HeaderValue::from_str(&cookie.as_str()[2..]).unwrap(),
|
HeaderValue::from_str(&cookie.as_str()[2..]).unwrap(),
|
||||||
|
@ -659,13 +653,13 @@ impl ClientRequestBuilder {
|
||||||
|
|
||||||
self.body(body)
|
self.body(body)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Set a urlencoded body and generate `ClientRequest`
|
/// Set a urlencoded body and generate `ClientRequest`
|
||||||
///
|
///
|
||||||
/// `ClientRequestBuilder` can not be used after this call.
|
/// `ClientRequestBuilder` can not be used after this call.
|
||||||
pub fn form<T: Serialize>(&mut self, value: T) -> Result<ClientRequest, Error> {
|
pub fn form<T: Serialize>(&mut self, value: T) -> Result<ClientRequest, Error> {
|
||||||
let body = serde_urlencoded::to_string(&value)?;
|
let body = serde_urlencoded::to_string(&value)?;
|
||||||
|
|
||||||
let contains = if let Some(parts) = parts(&mut self.request, &self.err) {
|
let contains = if let Some(parts) = parts(&mut self.request, &self.err) {
|
||||||
parts.headers.contains_key(header::CONTENT_TYPE)
|
parts.headers.contains_key(header::CONTENT_TYPE)
|
||||||
} else {
|
} else {
|
||||||
|
@ -674,7 +668,7 @@ impl ClientRequestBuilder {
|
||||||
if !contains {
|
if !contains {
|
||||||
self.header(header::CONTENT_TYPE, "application/x-www-form-urlencoded");
|
self.header(header::CONTENT_TYPE, "application/x-www-form-urlencoded");
|
||||||
}
|
}
|
||||||
|
|
||||||
self.body(body)
|
self.body(body)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -703,7 +697,7 @@ impl ClientRequestBuilder {
|
||||||
ClientRequestBuilder {
|
ClientRequestBuilder {
|
||||||
request: self.request.take(),
|
request: self.request.take(),
|
||||||
err: self.err.take(),
|
err: self.err.take(),
|
||||||
cookies: self.cookies.take(),
|
cookies: mem::replace(&mut self.cookies, CookieJar::new()),
|
||||||
default_headers: self.default_headers,
|
default_headers: self.default_headers,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -98,15 +98,9 @@ impl HttpResponse {
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn into_builder(mut self) -> HttpResponseBuilder {
|
pub fn into_builder(mut self) -> HttpResponseBuilder {
|
||||||
// If this response has cookies, load them into a jar
|
// If this response has cookies, load them into a jar
|
||||||
let mut jar: Option<CookieJar> = None;
|
let mut jar = CookieJar::new();
|
||||||
for c in self.cookies() {
|
for c in self.cookies() {
|
||||||
if let Some(ref mut j) = jar {
|
jar.add_original(c.into_owned());
|
||||||
j.add_original(c.into_owned());
|
|
||||||
} else {
|
|
||||||
let mut j = CookieJar::new();
|
|
||||||
j.add_original(c.into_owned());
|
|
||||||
jar = Some(j);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
let response = self.0.take();
|
let response = self.0.take();
|
||||||
|
@ -352,7 +346,7 @@ pub struct HttpResponseBuilder {
|
||||||
response: Option<Box<InnerHttpResponse>>,
|
response: Option<Box<InnerHttpResponse>>,
|
||||||
pool: Option<Rc<UnsafeCell<HttpResponsePool>>>,
|
pool: Option<Rc<UnsafeCell<HttpResponsePool>>>,
|
||||||
err: Option<HttpError>,
|
err: Option<HttpError>,
|
||||||
cookies: Option<CookieJar>,
|
cookies: CookieJar,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl HttpResponseBuilder {
|
impl HttpResponseBuilder {
|
||||||
|
@ -546,13 +540,7 @@ impl HttpResponseBuilder {
|
||||||
/// }
|
/// }
|
||||||
/// ```
|
/// ```
|
||||||
pub fn cookie<'c>(&mut self, cookie: Cookie<'c>) -> &mut Self {
|
pub fn cookie<'c>(&mut self, cookie: Cookie<'c>) -> &mut Self {
|
||||||
if self.cookies.is_none() {
|
self.cookies.add(cookie.into_owned());
|
||||||
let mut jar = CookieJar::new();
|
|
||||||
jar.add(cookie.into_owned());
|
|
||||||
self.cookies = Some(jar)
|
|
||||||
} else {
|
|
||||||
self.cookies.as_mut().unwrap().add(cookie.into_owned());
|
|
||||||
}
|
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -573,15 +561,9 @@ impl HttpResponseBuilder {
|
||||||
/// }
|
/// }
|
||||||
/// ```
|
/// ```
|
||||||
pub fn del_cookie<'a>(&mut self, cookie: &Cookie<'a>) -> &mut Self {
|
pub fn del_cookie<'a>(&mut self, cookie: &Cookie<'a>) -> &mut Self {
|
||||||
{
|
let cookie = cookie.clone().into_owned();
|
||||||
if self.cookies.is_none() {
|
self.cookies.add_original(cookie.clone());
|
||||||
self.cookies = Some(CookieJar::new())
|
self.cookies.remove(cookie);
|
||||||
}
|
|
||||||
let jar = self.cookies.as_mut().unwrap();
|
|
||||||
let cookie = cookie.clone().into_owned();
|
|
||||||
jar.add_original(cookie.clone());
|
|
||||||
jar.remove(cookie);
|
|
||||||
}
|
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -631,13 +613,11 @@ impl HttpResponseBuilder {
|
||||||
return Error::from(e).into();
|
return Error::from(e).into();
|
||||||
}
|
}
|
||||||
let mut response = self.response.take().expect("cannot reuse response builder");
|
let mut response = self.response.take().expect("cannot reuse response builder");
|
||||||
if let Some(ref jar) = self.cookies {
|
for cookie in self.cookies.delta() {
|
||||||
for cookie in jar.delta() {
|
match HeaderValue::from_str(&cookie.to_string()) {
|
||||||
match HeaderValue::from_str(&cookie.to_string()) {
|
Ok(val) => response.headers.append(header::SET_COOKIE, val),
|
||||||
Ok(val) => response.headers.append(header::SET_COOKIE, val),
|
Err(e) => return Error::from(e).into(),
|
||||||
Err(e) => return Error::from(e).into(),
|
};
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
response.body = body.into();
|
response.body = body.into();
|
||||||
HttpResponse(Some(response), self.pool.take().unwrap())
|
HttpResponse(Some(response), self.pool.take().unwrap())
|
||||||
|
@ -691,7 +671,7 @@ impl HttpResponseBuilder {
|
||||||
response: self.response.take(),
|
response: self.response.take(),
|
||||||
pool: self.pool.take(),
|
pool: self.pool.take(),
|
||||||
err: self.err.take(),
|
err: self.err.take(),
|
||||||
cookies: self.cookies.take(),
|
cookies: mem::replace(&mut self.cookies, CookieJar::new()),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -939,7 +919,7 @@ impl HttpResponsePool {
|
||||||
response: Some(msg),
|
response: Some(msg),
|
||||||
pool: Some(Rc::clone(pool)),
|
pool: Some(Rc::clone(pool)),
|
||||||
err: None,
|
err: None,
|
||||||
cookies: None,
|
cookies: CookieJar::new(),
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
let msg = Box::new(InnerHttpResponse::new(status, Body::Empty));
|
let msg = Box::new(InnerHttpResponse::new(status, Body::Empty));
|
||||||
|
@ -947,7 +927,7 @@ impl HttpResponsePool {
|
||||||
response: Some(msg),
|
response: Some(msg),
|
||||||
pool: Some(Rc::clone(pool)),
|
pool: Some(Rc::clone(pool)),
|
||||||
err: None,
|
err: None,
|
||||||
cookies: None,
|
cookies: CookieJar::new(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue