Skip to main content

AuthStore

Struct AuthStore 

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

Keys held for this machine, keyed by normalised endpoint.

Serialize/Deserialize drive the on-disk TOML directly; there is no separate wire type because the file is drep’s own and has one shape.

Implementations§

Source§

impl AuthStore

Source

pub fn new() -> Self

An empty store, for a machine that has never stored a key.

Source

pub fn load(path: &Path) -> Result<Self, AuthError>

Read the store at path.

A missing file is an empty store, not an error: never having stored a key is the normal first-run state, and making the caller distinguish it from a real read failure would put that branch at every call site. A file that exists but cannot be read or parsed is an error, because silently treating a corrupt store as empty would send a user to re-paste keys they already have.

Source

pub fn save(&self, path: &Path) -> Result<(), AuthError>

Write the store to path, creating the directory if needed.

The file is created mode 0600 and the directory 0700 on Unix, and the mode is applied to an existing file too - a store written before this ran, or one whose mode a user widened, is narrowed on the next save rather than left as found.

Source

pub fn get(&self, endpoint: &str) -> Option<&str>

The key held for endpoint, if any.

Source

pub fn set(&mut self, endpoint: &str, key: &str) -> Result<(), AuthError>

Store key for endpoint, replacing any previous one.

The rule about what a credential may be is vet’s, not this method’s; only the wording is here, because a paste at the prompt and a helper’s stdout send the reader to different fixes.

Source

pub fn remove(&mut self, endpoint: &str) -> bool

Forget the key for endpoint. Returns whether one was held.

Source

pub fn endpoints(&self) -> Vec<&str>

Every endpoint with a stored key, in sorted order. Never the keys.

Source

pub fn is_empty(&self) -> bool

Whether the store holds nothing.

Trait Implementations§

Source§

impl Debug for AuthStore

Hand-written so a key cannot reach a log.

The same reasoning as LlmConfig and LlmClient: a derived Debug prints every value, so one {:?} anywhere would emit every credential the user has. The endpoints are printed because they are not secret and they are the useful half when debugging.

Source§

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

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

impl Default for AuthStore

Source§

fn default() -> AuthStore

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for AuthStore

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for AuthStore

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. 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> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

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

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

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

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + 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: Sized + 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, 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