ripestat-common 0.0.5

Common structs/enums for the RIPEstat API
Documentation
use serde::{Deserialize, Serialize};
use serde_json::Value;

#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct VisibilityRequest {
    pub resource: String,
    pub query_time: Option<String>,
    pub include: Option<String>,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct VisibilityResponse {
    pub visibilities: Vec<Visibility>,
    pub resource: String,
    pub related_prefixes: Vec<Value>,
    pub query_time: String,
    pub latest_time: String,
    pub include: Vec<String>,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Visibility {
    pub probe: VisibilityProbe,
    pub ipv4_full_table_peers_not_seeing: Vec<Ipv4FullTablePeersNotSeeing>,
    pub ipv6_full_table_peers_not_seeing: Vec<Ipv6FullTablePeersNotSeeing>,
    pub ipv4_full_table_peer_count: i64,
    pub ipv6_full_table_peer_count: i64,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct VisibilityProbe {
    pub city: String,
    pub country: String,
    pub longitude: f64,
    pub latitude: f64,
    pub name: String,
    pub ipv4_peer_count: i64,
    pub ipv6_peer_count: i64,
    pub ixp: String,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Ipv4FullTablePeersNotSeeing {
    pub asn: i64,
    pub ip: String,
    pub prefix_count: i64,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Ipv6FullTablePeersNotSeeing {
    pub asn: i64,
    pub ip: String,
    pub prefix_count: i64,
}