linkshieldai 0.2.0

Rust SDK for the LinkShieldAI URL safety API.
Documentation
use serde::{Deserialize, Serialize};
use serde_json::Value;

pub type RawJson = serde_json::Map<String, Value>;

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ScanUrl {
    pub submitted: String,
    pub normalized: String,
    pub redirects: Vec<String>,
}

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ScanResult {
    pub request_id: String,
    pub url: ScanUrl,
    pub mode: String,
    pub verdict: String,
    pub confidence: Option<f64>,
    pub risk_score: Option<f64>,
    pub threat_categories: Vec<String>,
    pub reason_codes: Vec<String>,
    pub brand_target: Option<String>,
    pub screenshot_url: Option<String>,
    pub scanned_at: String,
    pub freshness: String,
    pub engine_version: String,
}

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct BasicCheckResult {
    pub result: Option<String>,
    pub is_malicious: bool,
    pub is_safe: bool,
    pub raw: RawJson,
}

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct DetailedCheckResult {
    pub result: Option<String>,
    pub screenshot_url: Option<String>,
    pub tag: Option<String>,
    pub is_malicious: bool,
    pub raw: RawJson,
}

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct NsfwCheckResult {
    pub result: Option<String>,
    pub is_nsfw: bool,
    pub raw: RawJson,
}

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ChimeraResult {
    pub result: Option<String>,
    pub probability: Option<f64>,
    pub detection_method: Option<String>,
    pub matched_signatures: Option<i64>,
    pub url: Option<String>,
    pub is_malicious: bool,
    pub raw: RawJson,
}