[][src]Struct surf_cookie_middleware::CookieMiddleware

pub struct CookieMiddleware { /* fields omitted */ }

A middleware for sending received cookies in surf

File system persistence

This middleware can optionally be constructed with a file or path to enable writing "persistent cookies" to disk after every received response.

Cloning semantics

All clones of this middleware will refer to the same data and fd (if persistence is enabled).

Usage example

use surf::Client;
use surf_cookie_middleware::CookieMiddleware;
let client = Client::new().with(CookieMiddleware::new());
// client.get(...).await?;
// client.get(...).await?; <- this request will send any appropriate
//                            cookies received from the first request,
//                            based on request url

Implementations

impl CookieMiddleware[src]

pub fn new() -> Self[src]

Builds a new CookieMiddleware

Example

use surf_cookie_middleware::CookieMiddleware;

let client = surf::Client::new().with(CookieMiddleware::new());

// client.get(...).await?;
// client.get(...).await?; <- this request will send any appropriate
//                            cookies received from the first request,
//                            based on request url

Builds a CookieMiddleware with an existing cookie_store::CookieStore

Example

use surf_cookie_middleware::{CookieStore, CookieMiddleware};

let cookie_store = CookieStore::default();
let client = surf::Client::new()
    .with(CookieMiddleware::with_cookie_store(cookie_store));

pub async fn from_path(path: impl Into<PathBuf>) -> Result<Self>[src]

Builds a CookieMiddleware from a path to a filesystem cookie jar. These jars are stored in ndjson format. If the file does not exist, it will be created. If the file does exist, the cookie jar will be initialized with those cookies.

Currently this only persists "persistent cookies" -- cookies with an expiry. "Session cookies" (without an expiry) are not persisted to disk, nor are expired cookies.

Example

use surf_cookie_middleware::{CookieStore, CookieMiddleware};

let cookie_store = CookieStore::default();
let client = surf::Client::new()
    .with(CookieMiddleware::from_path("./cookies.ndjson").await?);

pub async fn from_file(file: impl Into<File>) -> Result<Self>[src]

Builds a CookieMiddleware from a File (either async_std::fs::File or std::fs::File) that represents a filesystem cookie jar. These jars are stored in ndjson format. The cookie jar will be initialized with any cookies contained in this file, and persisted to the file after every request.

Currently this only persists "persistent cookies" -- cookies with an expiry. "Session cookies" (without an expiry) are not persisted to disk, nor are expired cookies.

Example

use surf::Client;
use surf_cookie_middleware::{CookieStore, CookieMiddleware};
let cookie_store = CookieStore::default();
let file = std::fs::File::create("./cookies.ndjson")?;
let client = Client::new()
    .with(CookieMiddleware::from_file(file).await?);

Trait Implementations

impl Clone for CookieMiddleware[src]

impl Debug for CookieMiddleware[src]

impl Default for CookieMiddleware[src]

impl Middleware for CookieMiddleware[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T> Instrument for T[src]

impl<T> Instrument for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<F> Middleware for F where
    F: Send + Sync + 'static + for<'a> Fn(Request, Client, Next<'a>) -> Pin<Box<dyn Future<Output = Result<Response, Error>> + 'a + Send>>, 
[src]

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>, 

impl<T> WithSubscriber for T[src]