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.
|
/// Load request cookies.
|
||||||
#[cfg(feature = "cookies")]
|
#[cfg(feature = "cookies")]
|
||||||
#[inline]
|
|
||||||
fn cookies(&self) -> Result<Ref<'_, Vec<Cookie<'static>>>, CookieParseError> {
|
fn cookies(&self) -> Result<Ref<'_, Vec<Cookie<'static>>>, CookieParseError> {
|
||||||
|
eprintln!("default impl cookies?");
|
||||||
|
|
||||||
if self.extensions().get::<Cookies>().is_none() {
|
if self.extensions().get::<Cookies>().is_none() {
|
||||||
let mut cookies = Vec::new();
|
let mut cookies = Vec::new();
|
||||||
for hdr in self.headers().get_all(header::COOKIE) {
|
for hdr in self.headers().get_all(header::COOKIE) {
|
||||||
|
@ -122,6 +123,7 @@ pub trait HttpMessage: Sized {
|
||||||
}
|
}
|
||||||
self.extensions_mut().insert(Cookies(cookies));
|
self.extensions_mut().insert(Cookies(cookies));
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(Ref::map(self.extensions(), |ext| {
|
Ok(Ref::map(self.extensions(), |ext| {
|
||||||
&ext.get::<Cookies>().unwrap().0
|
&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::fmt;
|
||||||
use std::future::Future;
|
use std::future::Future;
|
||||||
use std::marker::PhantomData;
|
use std::marker::PhantomData;
|
||||||
|
@ -11,11 +11,12 @@ use futures_core::{ready, Stream};
|
||||||
use actix_http::error::PayloadError;
|
use actix_http::error::PayloadError;
|
||||||
use actix_http::http::header;
|
use actix_http::http::header;
|
||||||
use actix_http::http::{HeaderMap, StatusCode, Version};
|
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 actix_http::{Extensions, HttpMessage, Payload, PayloadStream, ResponseHead};
|
||||||
use serde::de::DeserializeOwned;
|
use serde::de::DeserializeOwned;
|
||||||
|
|
||||||
|
#[cfg(feature = "cookies")]
|
||||||
|
use actix_http::{cookie::Cookie, error::CookieParseError};
|
||||||
|
|
||||||
use crate::error::JsonPayloadError;
|
use crate::error::JsonPayloadError;
|
||||||
|
|
||||||
/// Client Response
|
/// Client Response
|
||||||
|
@ -40,16 +41,18 @@ impl<S> HttpMessage for ClientResponse<S> {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn take_payload(&mut self) -> Payload<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.
|
/// Load request cookies.
|
||||||
#[cfg(feature = "cookies")]
|
#[cfg(feature = "cookies")]
|
||||||
#[inline]
|
|
||||||
fn cookies(&self) -> Result<Ref<'_, Vec<Cookie<'static>>>, CookieParseError> {
|
fn cookies(&self) -> Result<Ref<'_, Vec<Cookie<'static>>>, CookieParseError> {
|
||||||
|
eprintln!("awc fn cookies");
|
||||||
|
|
||||||
struct Cookies(Vec<Cookie<'static>>);
|
struct Cookies(Vec<Cookie<'static>>);
|
||||||
|
|
||||||
if self.extensions().get::<Cookies>().is_none() {
|
if self.extensions().get::<Cookies>().is_none() {
|
||||||
|
eprintln!("no cookies, inserting");
|
||||||
let mut cookies = Vec::new();
|
let mut cookies = Vec::new();
|
||||||
for hdr in self.headers().get_all(&header::SET_COOKIE) {
|
for hdr in self.headers().get_all(&header::SET_COOKIE) {
|
||||||
let s = std::str::from_utf8(hdr.as_bytes()).map_err(CookieParseError::from)?;
|
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")
|
let first_cookie = http::CookieBuilder::new("first", "first_value")
|
||||||
.http_only(true)
|
.http_only(true)
|
||||||
.finish();
|
.finish();
|
||||||
let second_cookie = http::Cookie::new("second", "second_value");
|
let second_cookie = http::Cookie::new("second", "second_value");
|
||||||
|
|
||||||
let req = srv.get("/");
|
eprintln!("gimme cookie");
|
||||||
let res = req.send().await.unwrap();
|
|
||||||
assert!(res.status().is_success());
|
|
||||||
|
|
||||||
let cookies = res.cookies().expect("To have cookies");
|
let cookies = res.cookies().expect("To have cookies");
|
||||||
assert_eq!(cookies.len(), 2);
|
assert_eq!(cookies.len(), 2);
|
||||||
if cookies[0] == first_cookie {
|
if cookies[0] == first_cookie {
|
||||||
|
|
Loading…
Reference in New Issue