linkshieldai 0.2.0

Rust SDK for the LinkShieldAI URL safety API.
Documentation
use std::time::Duration;

#[derive(Debug, thiserror::Error)]
pub enum LinkShieldAIError {
    #[error("LinkShieldAI API key is required. Pass an API key or set LINKSHIELDAI_API_KEY.")]
    Authentication,

    #[error("LinkShieldAI API rate limit exceeded.")]
    RateLimit { retry_after: Option<Duration> },

    #[error("Could not connect to LinkShieldAI API: {0}")]
    Connection(#[from] reqwest::Error),

    #[error("{message}")]
    Status {
        status_code: u16,
        message: String,
        payload: Option<serde_json::Value>,
    },

    #[error("{message}")]
    Response {
        message: String,
        payload: Option<serde_json::Value>,
    },

    #[error("{0}")]
    InvalidInput(String),

    #[error("Unable to write screenshot: {0}")]
    Io(#[from] std::io::Error),

    #[error("Invalid URL: {0}")]
    Url(#[from] url::ParseError),
}

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