Skip to content

Commit

Permalink
wat
Browse files Browse the repository at this point in the history
  • Loading branch information
robjtede committed Feb 12, 2021
1 parent 9eeb729 commit 5175312
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 6 deletions.
4 changes: 3 additions & 1 deletion actix-http/src/http_message.rs
Original file line number Diff line number Diff line change
Expand Up @@ -107,8 +107,9 @@ pub trait HttpMessage: Sized {

/// Load request cookies.
#[cfg(feature = "cookies")]
#[inline]
fn cookies(&self) -> Result<Ref<'_, Vec<Cookie<'static>>>, CookieParseError> {
eprintln!("default impl cookies?");

if self.extensions().get::<Cookies>().is_none() {
let mut cookies = Vec::new();
for hdr in self.headers().get_all(header::COOKIE) {
Expand All @@ -122,6 +123,7 @@ pub trait HttpMessage: Sized {
}
self.extensions_mut().insert(Cookies(cookies));
}

Ok(Ref::map(self.extensions(), |ext| {
&ext.get::<Cookies>().unwrap().0
}))
Expand Down
13 changes: 8 additions & 5 deletions awc/src/response.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use std::cell::{Ref, RefMut};
use std::{cell::{Ref, RefMut}, mem};
use std::fmt;
use std::future::Future;
use std::marker::PhantomData;
Expand All @@ -11,11 +11,12 @@ use futures_core::{ready, Stream};
use actix_http::error::PayloadError;
use actix_http::http::header;
use actix_http::http::{HeaderMap, StatusCode, Version};
#[cfg(feature = "cookies")]
use actix_http::{cookie::Cookie, error::CookieParseError};
use actix_http::{Extensions, HttpMessage, Payload, PayloadStream, ResponseHead};
use serde::de::DeserializeOwned;

#[cfg(feature = "cookies")]
use actix_http::{cookie::Cookie, error::CookieParseError};

use crate::error::JsonPayloadError;

/// Client Response
Expand All @@ -40,16 +41,18 @@ impl<S> HttpMessage for ClientResponse<S> {
}

fn take_payload(&mut self) -> Payload<S> {
std::mem::replace(&mut self.payload, Payload::None)
mem::replace(&mut self.payload, Payload::None)
}

/// Load request cookies.
#[cfg(feature = "cookies")]
#[inline]
fn cookies(&self) -> Result<Ref<'_, Vec<Cookie<'static>>>, CookieParseError> {
eprintln!("awc fn cookies");

struct Cookies(Vec<Cookie<'static>>);

if self.extensions().get::<Cookies>().is_none() {
eprintln!("no cookies, inserting");
let mut cookies = Vec::new();
for hdr in self.headers().get_all(&header::SET_COOKIE) {
let s = std::str::from_utf8(hdr.as_bytes()).map_err(CookieParseError::from)?;
Expand Down
3 changes: 3 additions & 0 deletions tests/test_server.rs
Original file line number Diff line number Diff line change
Expand Up @@ -810,11 +810,14 @@ async fn test_server_cookies() {
let res = req.send().await.unwrap();
assert!(res.status().is_success());

eprintln!("{:?}", &res);

let first_cookie = http::CookieBuilder::new("first", "first_value")
.http_only(true)
.finish();
let second_cookie = http::Cookie::new("second", "second_value");

eprintln!("gimme cookie");
let cookies = res.cookies().expect("To have cookies");
assert_eq!(cookies.len(), 2);
if cookies[0] == first_cookie {
Expand Down

0 comments on commit 5175312

Please sign in to comment.