Authenticator

Struct Authenticator 

Source
pub struct Authenticator { /* private fields */ }
Expand description

Handles the iNaturalist OAuth2 flow to obtain an API token.

This struct is used to configure the authenticator and initiate the OAuth2 flow.

Implementations§

Source§

impl Authenticator

Source

pub fn new(client_id: String, client_secret: String) -> Self

Creates a new Authenticator.

§Arguments
  • client_id - The iNaturalist application’s client ID.
  • client_secret - The iNaturalist application’s client secret.
Source

pub fn with_redirect_server_port(self, port: u16) -> Self

Sets the port for the local redirect server.

The default port is 8080.

Source

pub fn authorization_url(&self) -> Result<AuthorizationInfo, Box<dyn Error>>

Generates the authorization URL and PKCE verifier.

This is the first step in the OAuth2 flow. The user should be redirected to the returned URL. The pkce_verifier must be stored and used when calling exchange_code.

Source

pub async fn exchange_code( &self, code: AuthorizationCode, pkce_verifier: PkceVerifier, ) -> Result<TokenDetails, Box<dyn Error>>

Exchanges an authorization code for an iNaturalist API token.

This is the final step in the OAuth2 flow. The code is obtained from the iNaturalist redirect, and pkce_verifier is the one generated by authorization_url.

Source

pub fn listen_for_redirect(&self) -> Result<AuthorizationCode, Box<dyn Error>>

Listens for the redirect from iNaturalist and extracts the authorization code.

This method starts a temporary local server to catch the redirect from iNaturalist after the user has authorized the application. It’s a blocking call that waits for the redirect and returns the authorization code.

Source

pub async fn get_api_token(self) -> Result<TokenDetails, Box<dyn Error>>

Initiates the OAuth2 flow to get an iNaturalist API token.

This method opens the user’s web browser to the iNaturalist authorization page. After the user authorizes the application, it completes the OAuth2 flow, obtains an access token, and then exchanges it for a long-lived API token.

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

Source§

type Output = T

Should always be Self
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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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<T> ErasedDestructor for T
where T: 'static,