use icann_rdap_common::check::Checks;
use serde::{Deserialize, Serialize};
use strum_macros::Display;
use crate::query::request::ResponseData;
#[derive(Serialize, Deserialize, Display, Clone, Copy)]
pub enum SourceType {
#[strum(serialize = "Domain Registry")]
DomainRegistry,
#[strum(serialize = "Domain Registrar")]
DomainRegistrar,
#[strum(serialize = "Regional Internet Registry")]
RegionalInternetRegistry,
#[strum(serialize = "Local Internet Registry")]
LocalInternetRegistry,
#[strum(serialize = "Uncategorized Registry")]
UncategorizedRegistry,
}
#[derive(Serialize, Deserialize, Clone, Copy)]
pub struct RequestData<'a> {
pub req_number: usize,
pub source_host: &'a str,
pub source_type: SourceType,
}
#[derive(Clone, Serialize)]
pub struct RequestResponse<'a> {
pub req_data: &'a RequestData<'a>,
pub res_data: &'a ResponseData,
pub checks: Checks<'a>,
}
#[derive(Clone, Deserialize)]
pub struct RequestResponseOwned<'a> {
#[serde(borrow)]
pub req_data: RequestData<'a>,
pub res_data: ResponseData,
pub checks: Checks<'a>,
}
pub type RequestResponses<'a> = Vec<RequestResponse<'a>>;