use serde::{Deserialize, Serialize};
use serde_json::{Map, Value};
#[derive(Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize)]
#[serde(rename_all = "snake_case")]
#[non_exhaustive]
pub enum VerificationReason {
Valid,
InvalidKey,
InsufficientCredits,
Forbidden,
RateLimited,
Denied,
}
#[derive(Clone, Debug, PartialEq)]
#[non_exhaustive]
pub struct VerificationResult {
pub valid: bool,
pub reason: VerificationReason,
pub status_code: u16,
pub request_id: Option<String>,
pub message: Option<String>,
pub api_id: Option<String>,
pub api_name: Option<String>,
pub resource: Option<String>,
pub credits_remaining: Option<i64>,
pub credits_limit: Option<i64>,
pub allowed_apis: Vec<String>,
pub retry_after: Option<f64>,
pub rate_limit: Option<Map<String, Value>>,
pub raw: Map<String, Value>,
}
impl VerificationResult {
pub const fn allowed(&self) -> bool {
self.valid
}
}