Struct NSHTTPCookie

Source
#[repr(C)]
pub struct NSHTTPCookie { /* private fields */ }
Available on crate feature NSHTTPCookie only.
Expand description

NSHTTPCookie represents an http cookie.

A NSHTTPCookie instance represents a single http cookie. It is an immutable object initialized from a dictionary that contains the various cookie attributes. It has accessors to get the various attributes of a cookie.

See also Apple’s documentation

Implementations§

Source§

impl NSHTTPCookie

Source

pub unsafe fn initWithProperties( this: Allocated<Self>, properties: &NSDictionary<NSHTTPCookiePropertyKey, AnyObject>, ) -> Option<Retained<Self>>

Available on crate features NSDictionary and NSString only.

Initialize a NSHTTPCookie object with a dictionary of parameters

Parameter properties: The dictionary of properties to be used to initialize this cookie.

Supported dictionary keys and value types for the given dictionary are as follows.

All properties can handle an NSString value, but some can also handle other types.

Property key constant Type of value Required Description
NSHTTPCookieComment NSString NO Comment for the cookie. Only valid for version 1 cookies and later. Default is nil.
NSHTTPCookieCommentURL NSURL or NSString NO Comment URL for the cookie. Only valid for version 1 cookies and later. Default is nil.
NSHTTPCookieDomain NSString Special, a value for either NSHTTPCookieOriginURL or NSHTTPCookieDomain must be specified. Domain for the cookie. Inferred from the value for NSHTTPCookieOriginURL if not provided.
NSHTTPCookieDiscard NSString NO A string stating whether the cookie should be discarded at the end of the session. String value must be either "TRUE" or "FALSE". Default is "FALSE", unless this is cookie is version 1 or greater and a value for NSHTTPCookieMaximumAge is not specified, in which case it is assumed "TRUE".
NSHTTPCookieExpires NSDate or NSString NO Expiration date for the cookie. Used only for version 0 cookies. Ignored for version 1 or greater.
NSHTTPCookieMaximumAge NSString NO A string containing an integer value stating how long in seconds the cookie should be kept, at most. Only valid for version 1 cookies and later. Default is "0".
NSHTTPCookieName NSString YES Name of the cookie
NSHTTPCookieOriginURL NSURL or NSString Special, a value for either NSHTTPCookieOriginURL or NSHTTPCookieDomain must be specified. URL that set this cookie. Used as default for other fields as noted.
NSHTTPCookiePath NSString NO Path for the cookie. Inferred from the value for NSHTTPCookieOriginURL if not provided. Default is "/".
NSHTTPCookiePort NSString NO comma-separated integer values specifying the ports for the cookie. Only valid for version 1 cookies and later. Default is empty string ("").
NSHTTPCookieSecure NSString NO A string stating whether the cookie should be transmitted only over secure channels. String value must be either "TRUE" or "FALSE". Default is "FALSE".
NSHTTPCookieValue NSString YES Value of the cookie
NSHTTPCookieVersion NSString NO Specifies the version of the cookie. Must be either "0" or "1". Default is "0".
NSHTTPCookieSetByJavaScript NSNumber NO `true`if the cookie is set via JavaScript. `false`if the cookie is not set via JavaScript

All other keys are ignored.

Returns: An initialized NSHTTPCookie, or nil if the set of dictionary keys is invalid, for example because a required key is missing, or a recognized key maps to an illegal value.

Source

pub unsafe fn cookieWithProperties( properties: &NSDictionary<NSHTTPCookiePropertyKey, AnyObject>, ) -> Option<Retained<NSHTTPCookie>>

Available on crate features NSDictionary and NSString only.

Allocates and initializes an NSHTTPCookie with the given dictionary.

See the NSHTTPCookie -initWithProperties: method for more information on the constraints imposed on the dictionary, and for descriptions of the supported keys and values.

Parameter properties: The dictionary to use to initialize this cookie.

Returns: A newly-created and autoreleased NSHTTPCookie instance, or nil if the set of dictionary keys is invalid, for example because a required key is missing, or a recognized key maps to an illegal value.

Source

pub unsafe fn requestHeaderFieldsWithCookies( cookies: &NSArray<NSHTTPCookie>, ) -> Retained<NSDictionary<NSString, NSString>>

Available on crate features NSArray and NSDictionary and NSString only.

Return a dictionary of header fields that can be used to add the specified cookies to the request.

Parameter cookies: The cookies to turn into request headers.

Returns: An NSDictionary where the keys are header field names, and the values are the corresponding header field values.

Source

pub unsafe fn cookiesWithResponseHeaderFields_forURL( header_fields: &NSDictionary<NSString, NSString>, url: &NSURL, ) -> Retained<NSArray<NSHTTPCookie>>

Available on crate features NSArray and NSDictionary and NSString and NSURL only.

Return an array of cookies parsed from the specified response header fields and URL.

Parameter headerFields: The response header fields to check for cookies.

Parameter URL: The URL that the cookies came from - relevant to how the cookies are interpreted.

Returns: An NSArray of NSHTTPCookie objects

This method will ignore irrelevant header fields so you can pass a dictionary containing data other than cookie data.

Source

pub unsafe fn properties( &self, ) -> Option<Retained<NSDictionary<NSHTTPCookiePropertyKey, AnyObject>>>

Available on crate features NSDictionary and NSString only.

Returns a dictionary representation of the receiver.

This method returns a dictionary representation of the NSHTTPCookie which can be saved and passed to -initWithProperties: or +cookieWithProperties: later to reconstitute an equivalent cookie.

See the NSHTTPCookie -initWithProperties: method for more information on the constraints imposed on the dictionary, and for descriptions of the supported keys and values.

Returns: The dictionary representation of the receiver.

Source

pub unsafe fn version(&self) -> NSUInteger

Returns the version of the receiver.

Version 0 maps to “old-style” Netscape cookies. Version 1 maps to RFC2965 cookies. There may be future versions.

Returns: the version of the receiver.

Source

pub unsafe fn name(&self) -> Retained<NSString>

Available on crate feature NSString only.

Returns the name of the receiver.

Returns: the name of the receiver.

Source

pub unsafe fn value(&self) -> Retained<NSString>

Available on crate feature NSString only.

Returns the value of the receiver.

Returns: the value of the receiver.

Source

pub unsafe fn expiresDate(&self) -> Option<Retained<NSDate>>

Available on crate feature NSDate only.

Returns the expires date of the receiver.

Returns: the expires date of the receiver.

The expires date is the date when the cookie should be deleted. The result will be nil if there is no specific expires date. This will be the case only for “session-only” cookies.

Returns: The expires date of the receiver.

Source

pub unsafe fn isSessionOnly(&self) -> bool

Returns whether the receiver is session-only.

Returns: YES if this receiver should be discarded at the end of the session (regardless of expiration date), NO if receiver need not be discarded at the end of the session.

Source

pub unsafe fn domain(&self) -> Retained<NSString>

Available on crate feature NSString only.

Returns the domain of the receiver.

This value specifies URL domain to which the cookie should be sent. A domain with a leading dot means the cookie should be sent to subdomains as well, assuming certain other restrictions are valid. See RFC 2965 for more detail.

Returns: The domain of the receiver.

Source

pub unsafe fn path(&self) -> Retained<NSString>

Available on crate feature NSString only.

Returns the path of the receiver.

This value specifies the URL path under the cookie’s domain for which this cookie should be sent. The cookie will also be sent for children of that path, so “/” is the most general.

Returns: The path of the receiver.

Source

pub unsafe fn isSecure(&self) -> bool

Returns whether the receiver should be sent only over secure channels

Cookies may be marked secure by a server (or by a javascript). Cookies marked as such must only be sent via an encrypted connection to trusted servers (i.e. via SSL or TLS), and should not be delivered to any javascript applications to prevent cross-site scripting vulnerabilities.

Returns: YES if this cookie should be sent only over secure channels, NO otherwise.

Source

pub unsafe fn isHTTPOnly(&self) -> bool

Returns whether the receiver should only be sent to HTTP servers per RFC 2965

Cookies may be marked as HTTPOnly by a server (or by a javascript). Cookies marked as such must only be sent via HTTP Headers in HTTP Requests for URL’s that match both the path and domain of the respective Cookies. Specifically these cookies should not be delivered to any javascript applications to prevent cross-site scripting vulnerabilities.

Returns: YES if this cookie should only be sent via HTTP headers, NO otherwise.

Source

pub unsafe fn comment(&self) -> Option<Retained<NSString>>

Available on crate feature NSString only.

Returns the comment of the receiver.

This value specifies a string which is suitable for presentation to the user explaining the contents and purpose of this cookie. It may be nil.

Returns: The comment of the receiver, or nil if the receiver has no comment.

Source

pub unsafe fn commentURL(&self) -> Option<Retained<NSURL>>

Available on crate feature NSURL only.

Returns the comment URL of the receiver.

This value specifies a URL which is suitable for presentation to the user as a link for further information about this cookie. It may be nil.

Returns: The comment URL of the receiver, or nil if the receiver has no comment URL.

Source

pub unsafe fn portList(&self) -> Option<Retained<NSArray<NSNumber>>>

Available on crate features NSArray and NSValue only.

Returns the list ports to which the receiver should be sent.

This value specifies an NSArray of NSNumbers (containing integers) which specify the only ports to which this cookie should be sent.

Returns: The list ports to which the receiver should be sent. The array may be nil, in which case this cookie can be sent to any port.

Source

pub unsafe fn sameSitePolicy( &self, ) -> Option<Retained<NSHTTPCookieStringPolicy>>

Available on crate feature NSString only.

Returns the value of the same site attribute on the cookie.

Cookies can be marked with an attribute Strict or Lax. Cookies marked with “strict” (NSHTTPCookieSameSiteStrict) are not sent along with cross-site requests. Cookies marked with “lax” (NSHTTPCookieSameSiteLax) sent along cross-site requests provided the cross-site requests are top-level-requests (one that changes the url in the address bar). The attribute value is canonicalized and stored. Any value other than the default (strict and lax) will be ignored.

Returns: strict or lax. The result could also be nil, in which case the cookie will be sent along with all cross-site requests.

Source§

impl NSHTTPCookie

Methods declared on superclass NSObject.

Source

pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>

Source

pub unsafe fn new() -> Retained<Self>

Methods from Deref<Target = NSObject>§

Source

pub fn doesNotRecognizeSelector(&self, sel: Sel) -> !

Handle messages the object doesn’t recognize.

See Apple’s documentation for details.

Methods from Deref<Target = AnyObject>§

Source

pub fn class(&self) -> &'static AnyClass

Dynamically find the class of this object.

§Panics

May panic if the object is invalid (which may be the case for objects returned from unavailable init/new methods).

§Example

Check that an instance of NSObject has the precise class NSObject.

use objc2::ClassType;
use objc2::runtime::NSObject;

let obj = NSObject::new();
assert_eq!(obj.class(), NSObject::class());
Source

pub unsafe fn get_ivar<T>(&self, name: &str) -> &T
where T: Encode,

👎Deprecated: this is difficult to use correctly, use Ivar::load instead.

Use Ivar::load instead.

§Safety

The object must have an instance variable with the given name, and it must be of type T.

See Ivar::load_ptr for details surrounding this.

Source

pub fn downcast_ref<T>(&self) -> Option<&T>
where T: DowncastTarget,

Attempt to downcast the object to a class of type T.

This is the reference-variant. Use Retained::downcast if you want to convert a retained object to another type.

§Mutable classes

Some classes have immutable and mutable variants, such as NSString and NSMutableString.

When some Objective-C API signature says it gives you an immutable class, it generally expects you to not mutate that, even though it may technically be mutable “under the hood”.

So using this method to convert a NSString to a NSMutableString, while not unsound, is generally frowned upon unless you created the string yourself, or the API explicitly documents the string to be mutable.

See Apple’s documentation on mutability and on isKindOfClass: for more details.

§Generic classes

Objective-C generics are called “lightweight generics”, and that’s because they aren’t exposed in the runtime. This makes it impossible to safely downcast to generic collections, so this is disallowed by this method.

You can, however, safely downcast to generic collections where all the type-parameters are AnyObject.

§Panics

This works internally by calling isKindOfClass:. That means that the object must have the instance method of that name, and an exception will be thrown (if CoreFoundation is linked) or the process will abort if that is not the case. In the vast majority of cases, you don’t need to worry about this, since both root objects NSObject and NSProxy implement this method.

§Examples

Cast an NSString back and forth from NSObject.

use objc2::rc::Retained;
use objc2_foundation::{NSObject, NSString};

let obj: Retained<NSObject> = NSString::new().into_super();
let string = obj.downcast_ref::<NSString>().unwrap();
// Or with `downcast`, if we do not need the object afterwards
let string = obj.downcast::<NSString>().unwrap();

Try (and fail) to cast an NSObject to an NSString.

use objc2_foundation::{NSObject, NSString};

let obj = NSObject::new();
assert!(obj.downcast_ref::<NSString>().is_none());

Try to cast to an array of strings.

use objc2_foundation::{NSArray, NSObject, NSString};

let arr = NSArray::from_retained_slice(&[NSObject::new()]);
// This is invalid and doesn't type check.
let arr = arr.downcast_ref::<NSArray<NSString>>();

This fails to compile, since it would require enumerating over the array to ensure that each element is of the desired type, which is a performance pitfall.

Downcast when processing each element instead.

use objc2_foundation::{NSArray, NSObject, NSString};

let arr = NSArray::from_retained_slice(&[NSObject::new()]);

for elem in arr {
    if let Some(data) = elem.downcast_ref::<NSString>() {
        // handle `data`
    }
}

Trait Implementations§

Source§

impl AsRef<AnyObject> for NSHTTPCookie

Source§

fn as_ref(&self) -> &AnyObject

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl AsRef<NSHTTPCookie> for NSHTTPCookie

Source§

fn as_ref(&self) -> &Self

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl AsRef<NSObject> for NSHTTPCookie

Source§

fn as_ref(&self) -> &NSObject

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl Borrow<AnyObject> for NSHTTPCookie

Source§

fn borrow(&self) -> &AnyObject

Immutably borrows from an owned value. Read more
Source§

impl Borrow<NSObject> for NSHTTPCookie

Source§

fn borrow(&self) -> &NSObject

Immutably borrows from an owned value. Read more
Source§

impl ClassType for NSHTTPCookie

Source§

const NAME: &'static str = "NSHTTPCookie"

The name of the Objective-C class that this type represents. Read more
Source§

type Super = NSObject

The superclass of this class. Read more
Source§

type ThreadKind = <<NSHTTPCookie as ClassType>::Super as ClassType>::ThreadKind

Whether the type can be used from any thread, or from only the main thread. Read more
Source§

fn class() -> &'static AnyClass

Get a reference to the Objective-C class that this type represents. Read more
Source§

fn as_super(&self) -> &Self::Super

Get an immutable reference to the superclass.
Source§

impl Debug for NSHTTPCookie

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Deref for NSHTTPCookie

Source§

type Target = NSObject

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

impl Hash for NSHTTPCookie

Source§

fn hash<H: Hasher>(&self, state: &mut H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl Message for NSHTTPCookie

Source§

fn retain(&self) -> Retained<Self>
where Self: Sized,

Increment the reference count of the receiver. Read more
Source§

impl NSObjectProtocol for NSHTTPCookie

Source§

fn isEqual(&self, other: Option<&AnyObject>) -> bool
where Self: Sized + Message,

Check whether the object is equal to an arbitrary other object. Read more
Source§

fn hash(&self) -> usize
where Self: Sized + Message,

An integer that can be used as a table address in a hash table structure. Read more
Source§

fn isKindOfClass(&self, cls: &AnyClass) -> bool
where Self: Sized + Message,

Check if the object is an instance of the class, or one of its subclasses. Read more
Source§

fn is_kind_of<T>(&self) -> bool
where T: ClassType, Self: Sized + Message,

👎Deprecated: use isKindOfClass directly, or cast your objects with AnyObject::downcast_ref
Check if the object is an instance of the class type, or one of its subclasses. Read more
Source§

fn isMemberOfClass(&self, cls: &AnyClass) -> bool
where Self: Sized + Message,

Check if the object is an instance of a specific class, without checking subclasses. Read more
Source§

fn respondsToSelector(&self, aSelector: Sel) -> bool
where Self: Sized + Message,

Check whether the object implements or inherits a method with the given selector. Read more
Source§

fn conformsToProtocol(&self, aProtocol: &AnyProtocol) -> bool
where Self: Sized + Message,

Check whether the object conforms to a given protocol. Read more
Source§

fn description(&self) -> Retained<NSObject>
where Self: Sized + Message,

A textual representation of the object. Read more
Source§

fn debugDescription(&self) -> Retained<NSObject>
where Self: Sized + Message,

A textual representation of the object to use when debugging. Read more
Source§

fn isProxy(&self) -> bool
where Self: Sized + Message,

Check whether the receiver is a subclass of the NSProxy root class instead of the usual NSObject. Read more
Source§

fn retainCount(&self) -> usize
where Self: Sized + Message,

The reference count of the object. Read more
Source§

impl PartialEq for NSHTTPCookie

Source§

fn eq(&self, other: &Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl RefEncode for NSHTTPCookie

Source§

const ENCODING_REF: Encoding = <NSObject as ::objc2::RefEncode>::ENCODING_REF

The Objective-C type-encoding for a reference of this type. Read more
Source§

impl DowncastTarget for NSHTTPCookie

Source§

impl Eq for NSHTTPCookie

Source§

impl Send for NSHTTPCookie

Source§

impl Sync for NSHTTPCookie

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<'a, T> AnyThread for T
where T: ClassType<ThreadKind = dyn AnyThread + 'a> + ?Sized,

Source§

fn alloc() -> Allocated<Self>
where Self: Sized + ClassType,

Allocate a new instance of the class. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> AutoreleaseSafe for T
where T: ?Sized,