remove cookie method from httpmessage trait

This commit is contained in:
Rob Ede 2021-04-06 12:08:13 +01:00
parent 3f5a73793a
commit 2522bc0147
No known key found for this signature in database
GPG Key ID: 97C636207D3EF933
15 changed files with 60 additions and 36 deletions

View File

@ -88,6 +88,7 @@ actix-http = "3.0.0-beta.5"
ahash = "0.7"
bytes = "1"
cookie = "0.15"
derive_more = "0.99.5"
either = "1.5.3"
encoding_rs = "0.8"

View File

@ -55,7 +55,7 @@ base64 = "0.13"
bitflags = "1.2"
bytes = "1"
bytestring = "1"
cookie = { version = "0.14.1", features = ["percent-encode"], optional = true }
cookie = { version = "0.15", features = ["percent-encode"], optional = true }
derive_more = "0.99.5"
encoding_rs = "0.8"
futures-core = { version = "0.3.7", default-features = false, features = ["alloc"] }

View File

@ -126,19 +126,6 @@ pub trait HttpMessage: Sized {
&ext.get::<Cookies>().unwrap().0
}))
}
/// Return request cookie.
#[cfg(feature = "cookies")]
fn cookie(&self, name: &str) -> Option<Cookie<'static>> {
if let Ok(cookies) = self.cookies() {
for cookie in cookies.iter() {
if cookie.name() == name {
return Some(cookie.to_owned());
}
}
}
None
}
}
impl<'a, T> HttpMessage for &'a mut T

View File

@ -6,13 +6,11 @@
//! | `openssl` | TLS support via [OpenSSL]. |
//! | `rustls` | TLS support via [rustls]. |
//! | `compress` | Payload compression support. (Deflate, Gzip & Brotli) |
//! | `cookies` | Support for cookies backed by the [cookie] crate. |
//! | `secure-cookies` | Adds for secure cookies. Enables `cookies` feature. |
//! | `trust-dns` | Use [trust-dns] as the client DNS resolver. |
//!
//! [OpenSSL]: https://crates.io/crates/openssl
//! [rustls]: https://crates.io/crates/rustls
//! [cookie]: https://crates.io/crates/cookie
//! [trust-dns]: https://crates.io/crates/trust-dns
#![deny(rust_2018_idioms, nonstandard_style)]
@ -56,7 +54,7 @@ pub mod test;
pub mod ws;
#[cfg(feature = "cookies")]
pub use cookie;
use cookie;
pub use self::builder::HttpServiceBuilder;
pub use self::config::{KeepAlive, ServiceConfig};

View File

@ -5,6 +5,7 @@ use std::{
fmt, net,
};
use cookie::Cookie;
use http::{header, Method, Uri, Version};
use crate::extensions::Extensions;
@ -168,6 +169,20 @@ impl<P> Request<P> {
pub fn peer_addr(&self) -> Option<net::SocketAddr> {
self.head().peer_addr
}
/// Return request cookie.
#[cfg(feature = "cookies")]
pub fn cookie(&self, name: &str) -> Option<Cookie<'static>> {
if let Ok(cookies) = self.cookies() {
for cookie in cookies.iter() {
if cookie.name() == name {
return Some(cookie.to_owned());
}
}
}
None
}
}
impl<P> fmt::Debug for Request<P> {

View File

@ -54,6 +54,7 @@ actix-rt = { version = "2.1", default-features = false }
base64 = "0.13"
bytes = "1"
cookie = "0.15"
derive_more = "0.99.5"
futures-core = { version = "0.3.7", default-features = false }
itoa = "0.4"

View File

@ -93,12 +93,11 @@
#![doc(html_logo_url = "https://actix.rs/img/logo.png")]
#![doc(html_favicon_url = "https://actix.rs/favicon.ico")]
use std::convert::TryFrom;
use std::rc::Rc;
use std::time::Duration;
use std::{convert::TryFrom, rc::Rc, time::Duration};
#[cfg(feature = "cookies")]
pub use actix_http::cookie;
pub use cookie;
pub use actix_http::{client::Connector, http};
use actix_http::{

View File

@ -9,13 +9,13 @@ use serde::Serialize;
use actix_http::body::Body;
#[cfg(feature = "cookies")]
use actix_http::cookie::{Cookie, CookieJar};
use actix_http::http::header::{self, IntoHeaderPair};
use actix_http::http::{
uri, ConnectionType, Error as HttpError, HeaderMap, HeaderValue, Method, Uri, Version,
};
use actix_http::{Error, RequestHead};
use crate::cookie::{Cookie, CookieJar};
use crate::error::{FreezeRequestError, InvalidUrl};
use crate::frozen::FrozenClientRequest;
use crate::sender::{PrepForSendingError, RequestSender, SendClientRequest};

View File

@ -20,7 +20,7 @@ use futures_core::{ready, Stream};
use serde::de::DeserializeOwned;
#[cfg(feature = "cookies")]
use actix_http::{cookie::Cookie, error::CookieParseError};
use {crate::cookie::Cookie, actix_http::error::CookieParseError};
use crate::error::JsonPayloadError;
@ -180,6 +180,19 @@ impl<S> ClientResponse<S> {
self.timeout = ResponseTimeout::Disabled(timeout);
self
}
/// Return request cookie.
#[cfg(feature = "cookies")]
pub fn cookie(&self, name: &str) -> Option<Cookie<'static>> {
if let Ok(cookies) = self.cookies() {
for cookie in cookies.iter() {
if cookie.name() == name {
return Some(cookie.to_owned());
}
}
}
None
}
}
impl<S> ClientResponse<S>

View File

@ -1,14 +1,12 @@
//! Test helpers for actix http client to use during testing.
use actix_http::http::header::IntoHeaderPair;
use actix_http::http::header::{self, HeaderValue};
use actix_http::http::{StatusCode, Version};
#[cfg(feature = "cookies")]
use actix_http::{
cookie::{Cookie, CookieJar},
http::header::{self, HeaderValue},
};
use actix_http::{h1, Payload, ResponseHead};
use bytes::Bytes;
#[cfg(feature = "cookies")]
use crate::cookie::{Cookie, CookieJar};
use crate::ClientResponse;
/// Test `ClientResponse` builder

View File

@ -31,14 +31,14 @@ use std::net::SocketAddr;
use std::{fmt, str};
use actix_codec::Framed;
#[cfg(feature = "cookies")]
use actix_http::cookie::{Cookie, CookieJar};
use actix_http::{ws, Payload, RequestHead};
use actix_rt::time::timeout;
use actix_service::Service;
pub use actix_http::ws::{CloseCode, CloseReason, Codec, Frame, Message};
#[cfg(feature = "cookies")]
use crate::cookie::{Cookie, CookieJar};
use crate::connect::{BoxedSocket, ConnectRequest};
use crate::error::{InvalidUrl, SendRequestError, WsClientError};
use crate::http::header::{self, HeaderName, HeaderValue, IntoHeaderValue, AUTHORIZATION};

View File

@ -24,7 +24,7 @@ use actix_web::{
dev::{AppConfig, BodyEncoding},
http::{header, Cookie},
middleware::Compress,
web, App, Error, HttpMessage, HttpRequest, HttpResponse,
web, App, Error, HttpRequest, HttpResponse,
};
use awc::error::{JsonPayloadError, PayloadError, SendRequestError};

View File

@ -95,13 +95,13 @@ pub mod test;
pub(crate) mod types;
pub mod web;
#[cfg(feature = "cookies")]
pub use actix_http::cookie;
pub use actix_http::Response as HttpResponse;
pub use actix_http::{body, Error, HttpMessage, ResponseError, Result};
#[doc(inline)]
pub use actix_rt as rt;
pub use actix_web_codegen::*;
#[cfg(feature = "cookies")]
pub use cookie;
pub use crate::app::App;
pub use crate::extract::FromRequest;

View File

@ -6,6 +6,7 @@ use actix_http::http::{HeaderMap, Method, Uri, Version};
use actix_http::{Error, Extensions, HttpMessage, Message, Payload, RequestHead};
use actix_router::{Path, Url};
use actix_utils::future::{ok, Ready};
use cookie::Cookie;
use smallvec::SmallVec;
use crate::app_service::AppInitServiceState;
@ -260,6 +261,19 @@ impl HttpRequest {
fn app_state(&self) -> &AppInitServiceState {
&*self.inner.app_state
}
/// Return request cookie.
#[cfg(feature = "cookies")]
pub fn cookie(&self, name: &str) -> Option<Cookie<'static>> {
if let Ok(cookies) = self.cookies() {
for cookie in cookies.iter() {
if cookie.name() == name {
return Some(cookie.to_owned());
}
}
}
None
}
}
impl HttpMessage for HttpRequest {

View File

@ -2,8 +2,6 @@
use std::{net::SocketAddr, rc::Rc};
#[cfg(feature = "cookies")]
use actix_http::cookie::Cookie;
pub use actix_http::test::TestBuffer;
use actix_http::{
http::{header::IntoHeaderPair, Method, StatusCode, Uri, Version},
@ -444,7 +442,7 @@ impl TestRequest {
/// Set cookie for this request.
#[cfg(feature = "cookies")]
pub fn cookie(mut self, cookie: Cookie<'_>) -> Self {
pub fn cookie(mut self, cookie: crate::cookie::Cookie<'_>) -> Self {
self.req.cookie(cookie);
self
}