Struct cookie::delta::DeltaCookie
source · pub(crate) struct DeltaCookie {
pub cookie: Cookie<'static>,
pub removed: bool,
}
Expand description
A DeltaCookie
is a helper structure used in a cookie jar. It wraps a
Cookie
so that it can be hashed and compared purely by name. It further
records whether the wrapped cookie is a “removal” cookie, that is, a cookie
that when sent to the client removes the named cookie on the client’s
machine.
Fields§
§removed: bool
Implementations§
source§impl DeltaCookie
impl DeltaCookie
sourcepub fn added(cookie: Cookie<'static>) -> DeltaCookie
pub fn added(cookie: Cookie<'static>) -> DeltaCookie
Create a new DeltaCookie
that is being added to a jar.
sourcepub fn removed(cookie: Cookie<'static>) -> DeltaCookie
pub fn removed(cookie: Cookie<'static>) -> DeltaCookie
Create a new DeltaCookie
that is being removed from a jar. The
cookie
should be a “removal” cookie.
Methods from Deref<Target = Cookie<'static>>§
sourcepub fn name(&self) -> &str
pub fn name(&self) -> &str
Returns the name of self
.
§Example
use cookie::Cookie;
let c = Cookie::new("name", "value");
assert_eq!(c.name(), "name");
sourcepub fn value(&self) -> &str
pub fn value(&self) -> &str
Returns the value of self
.
Does not strip surrounding quotes. See Cookie::value_trimmed()
for a
version that does.
§Example
use cookie::Cookie;
let c = Cookie::new("name", "value");
assert_eq!(c.value(), "value");
let c = Cookie::new("name", "\"value\"");
assert_eq!(c.value(), "\"value\"");
sourcepub fn value_trimmed(&self) -> &str
pub fn value_trimmed(&self) -> &str
Returns the value of self
with surrounding double-quotes trimmed.
This is not the value of the cookie (that is Cookie::value()
).
Instead, this is the value with a surrounding pair of double-quotes, if
any, trimmed away. Quotes are only trimmed when they form a pair and
never otherwise. The trimmed value is never used for other operations,
such as equality checking, on self
.
§Example
use cookie::Cookie;
let c0 = Cookie::new("name", "value");
assert_eq!(c0.value_trimmed(), "value");
let c = Cookie::new("name", "\"value\"");
assert_eq!(c.value_trimmed(), "value");
assert!(c != c0);
let c = Cookie::new("name", "\"value");
assert_eq!(c.value(), "\"value");
assert_eq!(c.value_trimmed(), "\"value");
assert!(c != c0);
let c = Cookie::new("name", "\"value\"\"");
assert_eq!(c.value(), "\"value\"\"");
assert_eq!(c.value_trimmed(), "value\"");
assert!(c != c0);
sourcepub fn name_value(&self) -> (&str, &str)
pub fn name_value(&self) -> (&str, &str)
Returns the name and value of self
as a tuple of (name, value)
.
§Example
use cookie::Cookie;
let c = Cookie::new("name", "value");
assert_eq!(c.name_value(), ("name", "value"));
sourcepub fn name_value_trimmed(&self) -> (&str, &str)
pub fn name_value_trimmed(&self) -> (&str, &str)
Returns the name and trimmed value of self
as a tuple of (name, trimmed_value)
.
§Example
use cookie::Cookie;
let c = Cookie::new("name", "\"value\"");
assert_eq!(c.name_value_trimmed(), ("name", "value"));
sourcepub fn http_only(&self) -> Option<bool>
pub fn http_only(&self) -> Option<bool>
Returns whether this cookie was marked HttpOnly
or not. Returns
Some(true)
when the cookie was explicitly set (manually or parsed) as
HttpOnly
, Some(false)
when http_only
was manually set to false
,
and None
otherwise.
§Example
use cookie::Cookie;
let c = Cookie::parse("name=value; httponly").unwrap();
assert_eq!(c.http_only(), Some(true));
let mut c = Cookie::new("name", "value");
assert_eq!(c.http_only(), None);
let mut c = Cookie::new("name", "value");
assert_eq!(c.http_only(), None);
// An explicitly set "false" value.
c.set_http_only(false);
assert_eq!(c.http_only(), Some(false));
// An explicitly set "true" value.
c.set_http_only(true);
assert_eq!(c.http_only(), Some(true));
sourcepub fn secure(&self) -> Option<bool>
pub fn secure(&self) -> Option<bool>
Returns whether this cookie was marked Secure
or not. Returns
Some(true)
when the cookie was explicitly set (manually or parsed) as
Secure
, Some(false)
when secure
was manually set to false
, and
None
otherwise.
§Example
use cookie::Cookie;
let c = Cookie::parse("name=value; Secure").unwrap();
assert_eq!(c.secure(), Some(true));
let mut c = Cookie::parse("name=value").unwrap();
assert_eq!(c.secure(), None);
let mut c = Cookie::new("name", "value");
assert_eq!(c.secure(), None);
// An explicitly set "false" value.
c.set_secure(false);
assert_eq!(c.secure(), Some(false));
// An explicitly set "true" value.
c.set_secure(true);
assert_eq!(c.secure(), Some(true));
sourcepub fn same_site(&self) -> Option<SameSite>
pub fn same_site(&self) -> Option<SameSite>
Returns the SameSite
attribute of this cookie if one was specified.
§Example
use cookie::{Cookie, SameSite};
let c = Cookie::parse("name=value; SameSite=Lax").unwrap();
assert_eq!(c.same_site(), Some(SameSite::Lax));
sourcepub fn partitioned(&self) -> Option<bool>
pub fn partitioned(&self) -> Option<bool>
Returns whether this cookie was marked Partitioned
or not. Returns
Some(true)
when the cookie was explicitly set (manually or parsed) as
Partitioned
, Some(false)
when partitioned
was manually set to false
,
and None
otherwise.
Note: This cookie attribute is an HTTP draft! Its meaning and definition are not standardized and therefore subject to change.
§Example
use cookie::Cookie;
let c = Cookie::parse("name=value; Partitioned").unwrap();
assert_eq!(c.partitioned(), Some(true));
let mut c = Cookie::parse("name=value").unwrap();
assert_eq!(c.partitioned(), None);
let mut c = Cookie::new("name", "value");
assert_eq!(c.partitioned(), None);
// An explicitly set "false" value.
c.set_partitioned(false);
assert_eq!(c.partitioned(), Some(false));
// An explicitly set "true" value.
c.set_partitioned(true);
assert_eq!(c.partitioned(), Some(true));
sourcepub fn max_age(&self) -> Option<Duration>
pub fn max_age(&self) -> Option<Duration>
Returns the specified max-age of the cookie if one was specified.
§Example
use cookie::Cookie;
let c = Cookie::parse("name=value").unwrap();
assert_eq!(c.max_age(), None);
let c = Cookie::parse("name=value; Max-Age=3600").unwrap();
assert_eq!(c.max_age().map(|age| age.whole_hours()), Some(1));
sourcepub fn path(&self) -> Option<&str>
pub fn path(&self) -> Option<&str>
Returns the Path
of the cookie if one was specified.
§Example
use cookie::Cookie;
let c = Cookie::parse("name=value").unwrap();
assert_eq!(c.path(), None);
let c = Cookie::parse("name=value; Path=/").unwrap();
assert_eq!(c.path(), Some("/"));
let c = Cookie::parse("name=value; path=/sub").unwrap();
assert_eq!(c.path(), Some("/sub"));
sourcepub fn domain(&self) -> Option<&str>
pub fn domain(&self) -> Option<&str>
Returns the Domain
of the cookie if one was specified.
This does not consider whether the Domain
is valid; validation is left
to higher-level libraries, as needed. However, if the Domain
starts
with a leading .
, the leading .
is stripped.
§Example
use cookie::Cookie;
let c = Cookie::parse("name=value").unwrap();
assert_eq!(c.domain(), None);
let c = Cookie::parse("name=value; Domain=crates.io").unwrap();
assert_eq!(c.domain(), Some("crates.io"));
let c = Cookie::parse("name=value; Domain=.crates.io").unwrap();
assert_eq!(c.domain(), Some("crates.io"));
// Note that `..crates.io` is not a valid domain.
let c = Cookie::parse("name=value; Domain=..crates.io").unwrap();
assert_eq!(c.domain(), Some(".crates.io"));
sourcepub fn expires(&self) -> Option<Expiration>
pub fn expires(&self) -> Option<Expiration>
Returns the Expiration
of the cookie if one was specified.
§Example
use cookie::{Cookie, Expiration};
let c = Cookie::parse("name=value").unwrap();
assert_eq!(c.expires(), None);
// Here, `cookie.expires_datetime()` returns `None`.
let c = Cookie::build(("name", "value")).expires(None).build();
assert_eq!(c.expires(), Some(Expiration::Session));
let expire_time = "Wed, 21 Oct 2017 07:28:00 GMT";
let cookie_str = format!("name=value; Expires={}", expire_time);
let c = Cookie::parse(cookie_str).unwrap();
assert_eq!(c.expires().and_then(|e| e.datetime()).map(|t| t.year()), Some(2017));
sourcepub fn expires_datetime(&self) -> Option<OffsetDateTime>
pub fn expires_datetime(&self) -> Option<OffsetDateTime>
Returns the expiration date-time of the cookie if one was specified.
§Example
use cookie::Cookie;
let c = Cookie::parse("name=value").unwrap();
assert_eq!(c.expires_datetime(), None);
// Here, `cookie.expires()` returns `Some`.
let c = Cookie::build(("name", "value")).expires(None).build();
assert_eq!(c.expires_datetime(), None);
let expire_time = "Wed, 21 Oct 2017 07:28:00 GMT";
let cookie_str = format!("name=value; Expires={}", expire_time);
let c = Cookie::parse(cookie_str).unwrap();
assert_eq!(c.expires_datetime().map(|t| t.year()), Some(2017));
sourcepub fn set_name<N: Into<Cow<'c, str>>>(&mut self, name: N)
pub fn set_name<N: Into<Cow<'c, str>>>(&mut self, name: N)
Sets the name of self
to name
.
§Example
use cookie::Cookie;
let mut c = Cookie::new("name", "value");
assert_eq!(c.name(), "name");
c.set_name("foo");
assert_eq!(c.name(), "foo");
sourcepub fn set_value<V: Into<Cow<'c, str>>>(&mut self, value: V)
pub fn set_value<V: Into<Cow<'c, str>>>(&mut self, value: V)
Sets the value of self
to value
.
§Example
use cookie::Cookie;
let mut c = Cookie::new("name", "value");
assert_eq!(c.value(), "value");
c.set_value("bar");
assert_eq!(c.value(), "bar");
sourcepub fn set_http_only<T: Into<Option<bool>>>(&mut self, value: T)
pub fn set_http_only<T: Into<Option<bool>>>(&mut self, value: T)
Sets the value of http_only
in self
to value
. If value
is
None
, the field is unset.
§Example
use cookie::Cookie;
let mut c = Cookie::new("name", "value");
assert_eq!(c.http_only(), None);
c.set_http_only(true);
assert_eq!(c.http_only(), Some(true));
c.set_http_only(false);
assert_eq!(c.http_only(), Some(false));
c.set_http_only(None);
assert_eq!(c.http_only(), None);
sourcepub fn set_secure<T: Into<Option<bool>>>(&mut self, value: T)
pub fn set_secure<T: Into<Option<bool>>>(&mut self, value: T)
Sets the value of secure
in self
to value
. If value
is None
,
the field is unset.
§Example
use cookie::Cookie;
let mut c = Cookie::new("name", "value");
assert_eq!(c.secure(), None);
c.set_secure(true);
assert_eq!(c.secure(), Some(true));
c.set_secure(false);
assert_eq!(c.secure(), Some(false));
c.set_secure(None);
assert_eq!(c.secure(), None);
sourcepub fn set_same_site<T: Into<Option<SameSite>>>(&mut self, value: T)
pub fn set_same_site<T: Into<Option<SameSite>>>(&mut self, value: T)
Sets the value of same_site
in self
to value
. If value
is
None
, the field is unset. If value
is SameSite::None
, the “Secure”
flag will be set when the cookie is written out unless secure
is
explicitly set to false
via Cookie::set_secure()
or the equivalent
builder method.
§Example
use cookie::{Cookie, SameSite};
let mut c = Cookie::new("name", "value");
assert_eq!(c.same_site(), None);
c.set_same_site(SameSite::None);
assert_eq!(c.same_site(), Some(SameSite::None));
assert_eq!(c.to_string(), "name=value; SameSite=None; Secure");
c.set_secure(false);
assert_eq!(c.to_string(), "name=value; SameSite=None");
let mut c = Cookie::new("name", "value");
assert_eq!(c.same_site(), None);
c.set_same_site(SameSite::Strict);
assert_eq!(c.same_site(), Some(SameSite::Strict));
assert_eq!(c.to_string(), "name=value; SameSite=Strict");
c.set_same_site(None);
assert_eq!(c.same_site(), None);
assert_eq!(c.to_string(), "name=value");
sourcepub fn set_partitioned<T: Into<Option<bool>>>(&mut self, value: T)
pub fn set_partitioned<T: Into<Option<bool>>>(&mut self, value: T)
Sets the value of partitioned
in self
to value
. If value
is
None
, the field is unset.
Note: Partitioned cookies require the Secure
attribute to be
set. As such, Partitioned
cookies are always rendered with the
Secure
attribute, irrespective of the Secure
attribute’s setting.
Note: This cookie attribute is an HTTP draft! Its meaning and definition are not standardized and therefore subject to change.
§Example
use cookie::Cookie;
let mut c = Cookie::new("name", "value");
assert_eq!(c.partitioned(), None);
c.set_partitioned(true);
assert_eq!(c.partitioned(), Some(true));
assert!(c.to_string().contains("Secure"));
c.set_partitioned(false);
assert_eq!(c.partitioned(), Some(false));
assert!(!c.to_string().contains("Secure"));
c.set_partitioned(None);
assert_eq!(c.partitioned(), None);
assert!(!c.to_string().contains("Secure"));
sourcepub fn set_max_age<D: Into<Option<Duration>>>(&mut self, value: D)
pub fn set_max_age<D: Into<Option<Duration>>>(&mut self, value: D)
Sets the value of max_age
in self
to value
. If value
is None
,
the field is unset.
§Example
use cookie::Cookie;
use cookie::time::Duration;
let mut c = Cookie::new("name", "value");
assert_eq!(c.max_age(), None);
c.set_max_age(Duration::hours(10));
assert_eq!(c.max_age(), Some(Duration::hours(10)));
c.set_max_age(None);
assert!(c.max_age().is_none());
sourcepub fn set_path<P: Into<Cow<'c, str>>>(&mut self, path: P)
pub fn set_path<P: Into<Cow<'c, str>>>(&mut self, path: P)
Sets the path
of self
to path
.
§Example
use cookie::Cookie;
let mut c = Cookie::new("name", "value");
assert_eq!(c.path(), None);
c.set_path("/");
assert_eq!(c.path(), Some("/"));
sourcepub fn unset_path(&mut self)
pub fn unset_path(&mut self)
Unsets the path
of self
.
§Example
use cookie::Cookie;
let mut c = Cookie::new("name", "value");
assert_eq!(c.path(), None);
c.set_path("/");
assert_eq!(c.path(), Some("/"));
c.unset_path();
assert_eq!(c.path(), None);
sourcepub fn set_domain<D: Into<Cow<'c, str>>>(&mut self, domain: D)
pub fn set_domain<D: Into<Cow<'c, str>>>(&mut self, domain: D)
Sets the domain
of self
to domain
.
§Example
use cookie::Cookie;
let mut c = Cookie::new("name", "value");
assert_eq!(c.domain(), None);
c.set_domain("rust-lang.org");
assert_eq!(c.domain(), Some("rust-lang.org"));
sourcepub fn unset_domain(&mut self)
pub fn unset_domain(&mut self)
Unsets the domain
of self
.
§Example
use cookie::Cookie;
let mut c = Cookie::new("name", "value");
assert_eq!(c.domain(), None);
c.set_domain("rust-lang.org");
assert_eq!(c.domain(), Some("rust-lang.org"));
c.unset_domain();
assert_eq!(c.domain(), None);
sourcepub fn set_expires<T: Into<Expiration>>(&mut self, time: T)
pub fn set_expires<T: Into<Expiration>>(&mut self, time: T)
Sets the expires field of self
to time
. If time
is None
, an
expiration of Session
is set.
§Example
use cookie::{Cookie, Expiration};
use cookie::time::{Duration, OffsetDateTime};
let mut c = Cookie::new("name", "value");
assert_eq!(c.expires(), None);
let mut now = OffsetDateTime::now_utc();
now += Duration::weeks(52);
c.set_expires(now);
assert!(c.expires().is_some());
c.set_expires(None);
assert_eq!(c.expires(), Some(Expiration::Session));
sourcepub fn unset_expires(&mut self)
pub fn unset_expires(&mut self)
Unsets the expires
of self
.
§Example
use cookie::{Cookie, Expiration};
let mut c = Cookie::new("name", "value");
assert_eq!(c.expires(), None);
c.set_expires(None);
assert_eq!(c.expires(), Some(Expiration::Session));
c.unset_expires();
assert_eq!(c.expires(), None);
sourcepub fn make_permanent(&mut self)
pub fn make_permanent(&mut self)
Makes self
a “permanent” cookie by extending its expiration and max
age 20 years into the future.
§Example
use cookie::Cookie;
use cookie::time::Duration;
let mut c = Cookie::new("foo", "bar");
assert!(c.expires().is_none());
assert!(c.max_age().is_none());
c.make_permanent();
assert!(c.expires().is_some());
assert_eq!(c.max_age(), Some(Duration::days(365 * 20)));
sourcepub fn make_removal(&mut self)
pub fn make_removal(&mut self)
Make self
a “removal” cookie by clearing its value, setting a max-age
of 0
, and setting an expiration date far in the past.
§Example
use cookie::Cookie;
use cookie::time::Duration;
let mut c = Cookie::new("foo", "bar");
c.make_permanent();
assert_eq!(c.max_age(), Some(Duration::days(365 * 20)));
assert_eq!(c.value(), "bar");
c.make_removal();
assert_eq!(c.value(), "");
assert_eq!(c.max_age(), Some(Duration::ZERO));
pub(crate) fn fmt_parameters(&self, f: &mut Formatter<'_>) -> Result
sourcepub fn name_raw(&self) -> Option<&'c str>
pub fn name_raw(&self) -> Option<&'c str>
Returns the name of self
as a string slice of the raw string self
was originally parsed from. If self
was not originally parsed from a
raw string, returns None
.
This method differs from Cookie::name()
in that it returns a string
with the same lifetime as the originally parsed string. This lifetime
may outlive self
. If a longer lifetime is not required, or you’re
unsure if you need a longer lifetime, use Cookie::name()
.
§Example
use cookie::Cookie;
let cookie_string = format!("{}={}", "foo", "bar");
// `c` will be dropped at the end of the scope, but `name` will live on
let name = {
let c = Cookie::parse(cookie_string.as_str()).unwrap();
c.name_raw()
};
assert_eq!(name, Some("foo"));
sourcepub fn value_raw(&self) -> Option<&'c str>
pub fn value_raw(&self) -> Option<&'c str>
Returns the value of self
as a string slice of the raw string self
was originally parsed from. If self
was not originally parsed from a
raw string, returns None
.
This method differs from Cookie::value()
in that it returns a
string with the same lifetime as the originally parsed string. This
lifetime may outlive self
. If a longer lifetime is not required, or
you’re unsure if you need a longer lifetime, use Cookie::value()
.
§Example
use cookie::Cookie;
let cookie_string = format!("{}={}", "foo", "bar");
// `c` will be dropped at the end of the scope, but `value` will live on
let value = {
let c = Cookie::parse(cookie_string.as_str()).unwrap();
c.value_raw()
};
assert_eq!(value, Some("bar"));
sourcepub fn path_raw(&self) -> Option<&'c str>
pub fn path_raw(&self) -> Option<&'c str>
Returns the Path
of self
as a string slice of the raw string self
was originally parsed from. If self
was not originally parsed from a
raw string, or if self
doesn’t contain a Path
, or if the Path
has
changed since parsing, returns None
.
This method differs from Cookie::path()
in that it returns a
string with the same lifetime as the originally parsed string. This
lifetime may outlive self
. If a longer lifetime is not required, or
you’re unsure if you need a longer lifetime, use Cookie::path()
.
§Example
use cookie::Cookie;
let cookie_string = format!("{}={}; Path=/", "foo", "bar");
// `c` will be dropped at the end of the scope, but `path` will live on
let path = {
let c = Cookie::parse(cookie_string.as_str()).unwrap();
c.path_raw()
};
assert_eq!(path, Some("/"));
sourcepub fn domain_raw(&self) -> Option<&'c str>
pub fn domain_raw(&self) -> Option<&'c str>
Returns the Domain
of self
as a string slice of the raw string
self
was originally parsed from. If self
was not originally parsed
from a raw string, or if self
doesn’t contain a Domain
, or if the
Domain
has changed since parsing, returns None
.
Like Cookie::domain()
, this does not consider whether Domain
is
valid; validation is left to higher-level libraries, as needed. However,
if Domain
starts with a leading .
, the leading .
is stripped.
This method differs from Cookie::domain()
in that it returns a
string with the same lifetime as the originally parsed string. This
lifetime may outlive self
struct. If a longer lifetime is not
required, or you’re unsure if you need a longer lifetime, use
Cookie::domain()
.
§Example
use cookie::Cookie;
let cookie_string = format!("{}={}; Domain=.crates.io", "foo", "bar");
//`c` will be dropped at the end of the scope, but `domain` will live on
let domain = {
let c = Cookie::parse(cookie_string.as_str()).unwrap();
c.domain_raw()
};
assert_eq!(domain, Some("crates.io"));
sourcepub fn stripped<'a>(&'a self) -> Display<'a, 'c>
pub fn stripped<'a>(&'a self) -> Display<'a, 'c>
Wraps self
in a stripped Display
]: a cost-free wrapper around
Cookie
whose fmt::Display
implementation prints only the name
and value
of the wrapped Cookie
.
The returned structure can be chained with [Display::encoded()
] to
encode the name and value.
§Example
use cookie::Cookie;
let mut c = Cookie::build(("key?", "value")).secure(true).path("/").build();
assert_eq!(&c.stripped().to_string(), "key?=value");
Trait Implementations§
source§impl Borrow<str> for DeltaCookie
impl Borrow<str> for DeltaCookie
source§impl Clone for DeltaCookie
impl Clone for DeltaCookie
source§fn clone(&self) -> DeltaCookie
fn clone(&self) -> DeltaCookie
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for DeltaCookie
impl Debug for DeltaCookie
source§impl Deref for DeltaCookie
impl Deref for DeltaCookie
source§impl DerefMut for DeltaCookie
impl DerefMut for DeltaCookie
source§impl Hash for DeltaCookie
impl Hash for DeltaCookie
source§impl PartialEq for DeltaCookie
impl PartialEq for DeltaCookie
source§fn eq(&self, other: &DeltaCookie) -> bool
fn eq(&self, other: &DeltaCookie) -> bool
self
and other
values to be equal, and is used
by ==
.