uniauth 2.1.1

Easy-to-use abstraction over authentication
Documentation
//! Error and result types

/// Error type for every daemon operation
#[derive(Debug, thiserror::Error)]
pub enum Error {
	#[error("daemon did not understand request")]
	UnknownRequest,
	#[error("unknown key")]
	UnknownKey,
	#[error("key already exists")]
	KeyExists,
	#[error("user did not authenticate")]
	UserDenied,
	#[error("general failure in daemon backend")]
	GeneralFailure,
	#[error("unknown status {0} returned by daemon")]
	UnknownStatus(u8),

	#[error("invalid data")]
	InvalidData,
	#[error("invalid signature")]
	InvalidSignature,
	#[error("unsupported algorithm")]
	UnsupportedAlgorithm,
	#[error("i/o error")]
	Other(#[from] std::io::Error)
}

impl Error {
	pub fn from_status(n: u8) -> Result<()> {
		use crate::status::*;

		match n {
			SUCCESS => Ok(()),
			UNKNOWN_REQUEST => Err(Self::UnknownRequest),
			UNKNOWN_KEY => Err(Self::UnknownKey),
			KEY_EXISTS => Err(Self::KeyExists),
			USER_DENIED => Err(Self::UserDenied),
			GENERAL_FAILURE => Err(Self::GeneralFailure),
			INVALID_KEY => Err(Self::InvalidData),
			UNSUPPORTED_KEY => Err(Self::UnsupportedAlgorithm),
			_ => Err(Self::UnknownStatus(n))
		}
	}
}

pub type Result<T> = std::result::Result<T, Error>;