rullst-connect 7.0.0

OAuth2 Social Login for Rust web frameworks.
Documentation
use thiserror::Error;

/// Official errors of the Rullst Connect library
#[derive(Error, Debug)]
pub enum ConnectError {
    #[error("HTTP request failed: {0}")]
    Reqwest(String),

    #[error("Failed to parse JSON: {0}")]
    Json(String),

    #[error("Failed to decode Base64: {0}")]
    Base64(String),

    #[error("JWT processing failed: {0}")]
    Jwt(String),

    #[error("System time error: {0}")]
    Time(String),

    #[error("Missing token or unexpected response: {0}")]
    Token(String),

    #[error("Provider API Error ({code}): {message}")]
    ProviderApiError { code: String, message: String },

    #[error("Provider specific error: {0}")]
    Provider(String),

    #[error("Invalid CSRF state: {0}")]
    InvalidState(String),
}

impl From<reqwest::Error> for ConnectError {
    fn from(err: reqwest::Error) -> Self {
        ConnectError::Reqwest(err.to_string())
    }
}

impl From<serde_json::Error> for ConnectError {
    fn from(err: serde_json::Error) -> Self {
        ConnectError::Json(err.to_string())
    }
}

impl From<base64::DecodeError> for ConnectError {
    fn from(err: base64::DecodeError) -> Self {
        ConnectError::Base64(err.to_string())
    }
}

impl From<jsonwebtoken::errors::Error> for ConnectError {
    fn from(err: jsonwebtoken::errors::Error) -> Self {
        ConnectError::Jwt(err.to_string())
    }
}

impl From<std::time::SystemTimeError> for ConnectError {
    fn from(err: std::time::SystemTimeError) -> Self {
        ConnectError::Time(err.to_string())
    }
}