use serde::{Deserialize, Serialize};
pub type ActionType = String;
pub const ACTION_TYPE_BLOCK: &str = "block";
pub const ACTION_TYPE_WARN: &str = "warn";
pub const ACTION_TYPE_WHITELIST: &str = "whitelist";
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Event {
pub action: ActionType,
#[serde(skip_serializing_if = "Option::is_none")]
pub comment: Option<String>,
pub created_at: String,
pub created_by: String,
pub event_type: EventType,
pub id: i64,
pub pattern: PatternType,
pub reason: ReasonType,
pub url: String,
}
pub type EventType = String;
pub const EVENT_TYPE_ADD_RULE: &str = "addRule";
pub const EVENT_TYPE_UPDATE_RULE: &str = "updateRule";
pub const EVENT_TYPE_REMOVE_RULE: &str = "removeRule";
pub type PatternType = String;
pub const PATTERN_TYPE_DOMAIN: &str = "domain";
pub const PATTERN_TYPE_URL: &str = "url";
pub type ReasonType = String;
pub const REASON_TYPE_CSAM: &str = "csam";
pub const REASON_TYPE_SPAM: &str = "spam";
pub const REASON_TYPE_PHISHING: &str = "phishing";
pub const REASON_TYPE_NONE: &str = "none";
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct UrlRule {
pub action: ActionType,
#[serde(skip_serializing_if = "Option::is_none")]
pub comment: Option<String>,
pub created_at: String,
pub created_by: String,
pub pattern: PatternType,
pub reason: ReasonType,
pub updated_at: String,
pub url: String,
}