Skip to main content

NifiClient

Struct NifiClient 

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

Client for the Apache NiFi REST API.

Implementations§

Source§

impl NifiClient

Source

pub fn token(&self) -> Option<&str>

Return the current bearer token, if one has been set.

The token is a NiFi-issued JWT. You can persist it between process restarts and restore it with set_token to avoid re-authenticating. The token will eventually expire (NiFi default: 12 hours); when it does, any API call returns NifiError::Api with status == 401. Re-call login to obtain a fresh token.

Source

pub fn set_token(&mut self, token: String)

Restore a previously obtained bearer token.

Useful for CLI tools that persist the token in a file between sessions. If the token has expired, the next API call will return NifiError::Api with status == 401; re-call login to obtain a fresh one.

Source

pub async fn logout(&mut self) -> Result<(), NifiError>

Invalidate the current bearer token and clear it from the client.

Sends DELETE /nifi-api/access/logout to invalidate the token server-side, then clears the local token unconditionally so that subsequent requests are not sent with a stale credential.

If the server returns an error (e.g. 401 because the token had already expired) the local token is still cleared and the error is returned to the caller.

Source

pub async fn login( &mut self, username: &str, password: &str, ) -> Result<(), NifiError>

Authenticate with NiFi using single-user credentials.

Obtains a JWT token from /nifi-api/access/token and stores it on the client for all subsequent requests.

§Token lifetime and expiry

NiFi JWTs expire after 12 hours by default (configurable server-side via nifi.security.user.login.identity.provider.expiration). Once expired, any API call returns NifiError::Api with status == 401. The recommended pattern:

use nifi_rust_client::NifiError;
match client.flow_api().get_about_info().await {
    Err(NifiError::Api { status: 401, .. }) => {
        client.login("admin", "password").await?;
        // retry the call
    }
    other => { other?; }
}

Automatic re-login is not built in: storing credentials on the client would keep plaintext passwords in memory for the lifetime of the process, which is undesirable in most contexts.

Trait Implementations§

Source§

impl Clone for NifiClient

Source§

fn clone(&self) -> NifiClient

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for NifiClient

Source§

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

Formats the value using the given formatter. 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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
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 = 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> 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