Skip to main content

Identity

Struct Identity 

Source
pub struct Identity(/* private fields */);
Expand description

Who a request appears to come from: a name, an optional proxy, and the headers it sends.

Identities are compared and hashed by name. Cloning is cheap.

Implementations§

Source§

impl Identity

Source

pub fn new(name: impl Into<Box<str>>) -> Self

Creates an identity named name, with no proxy and no headers.

Source

pub fn require_no_proxy(&self) -> Result<()>

Fails if requests should go through a proxy: for a backend that cannot route through one, so it never sends them from the crawler’s own IP instead.

§Errors

Returns an Invalid error if the identity has a proxy.

Source

pub fn with_proxy<U>(self, proxy: U) -> Result<Self>
where U: TryInto<Uri>, U::Error: Into<Error>,

Sends requests through proxy, an http, https or socks5 URL, with credentials if it needs them.

§Errors

Returns an Invalid error if proxy is malformed or not absolute.

Source

pub fn with_header(self, name: impl IntoHeaderName, value: HeaderValue) -> Self

Sends name with value on every request, unless the request sets it itself.

Source

pub fn with_profile(self, profile: Profile) -> Self

Available on crate feature user-agents only.

Presents as this browser profile. Identity headers override the profile’s headers, and request headers override both.

Real browser backends refuse profiles: their own browser supplies its user agent and client hints.

Source

pub fn profile(&self) -> Option<&Profile>

Available on crate feature user-agents only.

Returns the browser profile, kept separate from identity headers.

Source

pub fn require_no_profile(&self) -> Result<()>

Fails if this identity has a browser profile, for backends whose real browser supplies its own user agent and client hints.

§Errors

Returns an Invalid error if a profile is set. Without user-agents, always succeeds.

Source

pub fn name(&self) -> &str

Returns the name.

Source

pub fn proxy(&self) -> Option<&Uri>

Returns the proxy, if requests go through one.

Source

pub fn headers(&self) -> &HeaderMap

Returns the identity headers, excluding its browser profile.

Source

pub fn downgrade(&self) -> WeakIdentity

Returns a weak reference to this identity, which tells whether it is still in use: once the crawl retires it and its last request ends, it is gone. Backends use it to drop what they keep per identity, such as a client or a browser profile.

Trait Implementations§

Source§

impl Clone for Identity

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Identity

Shows the proxy without its credentials.

Source§

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

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

impl Eq for Identity

Source§

impl Hash for Identity

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 PartialEq for Identity

Source§

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

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

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

Inequality operator !=. Read more

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<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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<W> WorkerExt for W

Source§

fn layer<C, M>(self, middleware: M) -> Layered<M, C>
where C: Send + 'static, Self: Worker<C>, M: Middleware<C>,

Wraps this worker in middleware, which runs before it, and before any middleware added earlier.