mirror of https://github.com/fafhrd91/actix-web
wat
This commit is contained in:
parent
156462fdc1
commit
0dbd16511b
|
@ -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) {
|
||||
|
@ -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
|
||||
}))
|
||||
|
|
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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)?;
|
||||
|
|
|
@ -806,15 +806,18 @@ async fn test_server_cookies() {
|
|||
}))
|
||||
});
|
||||
|
||||
let req = srv.get("/");
|
||||
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");
|
||||
|
||||
let req = srv.get("/");
|
||||
let res = req.send().await.unwrap();
|
||||
assert!(res.status().is_success());
|
||||
|
||||
eprintln!("gimme cookie");
|
||||
let cookies = res.cookies().expect("To have cookies");
|
||||
assert_eq!(cookies.len(), 2);
|
||||
if cookies[0] == first_cookie {
|
||||
|
|
Loading…
Reference in New Issue