pub struct DriftReport {
pub domain: String,
pub changes: Vec<FieldChange>,
pub inconclusive: Option<String>,
}Expand description
A report of what changed between two snapshots of a domain.
Fields§
§domain: StringThe domain compared.
changes: Vec<FieldChange>The set of changed fields (empty when nothing material changed).
inconclusive: Option<String>Why the snapshots could not be compared, when one of them carries no
registration data (a throttled or inconclusive lookup). An absent
answer is not a changed answer, so nothing is diffed and
DriftReport::has_drift stays false.
Implementations§
Source§impl DriftReport
impl DriftReport
Sourcepub fn has_drift(&self) -> bool
pub fn has_drift(&self) -> bool
True when at least one material field changed. Callers (CLI/cron) use this to drive a non-zero exit code.
Sourcepub fn between(domain: &str, old: &DomainInfo, new: &DomainInfo) -> Self
pub fn between(domain: &str, old: &DomainInfo, new: &DomainInfo) -> Self
Diffs two already-merged DomainInfo snapshots, comparing only the
fields that matter for change monitoring.
Values are compared in a source-independent form: RDAP and WHOIS spell
the same EPP status (client transfer prohibited vs
clientTransferProhibited) and DNSSEC state (signed vs
signedDelegation) differently, and smart lookup legitimately flips
between the two when RDAP is throttled — that must not read as a
hijack indicator.
Sourcepub fn from_lookups(
domain: &str,
previous: &LookupResult,
current: &LookupResult,
) -> Self
pub fn from_lookups( domain: &str, previous: &LookupResult, current: &LookupResult, ) -> Self
Diffs two LookupResults by merging each into a DomainInfo first.
Trait Implementations§
Source§impl Clone for DriftReport
impl Clone for DriftReport
Source§impl Debug for DriftReport
impl Debug for DriftReport
Source§impl<'de> Deserialize<'de> for DriftReport
impl<'de> Deserialize<'de> for DriftReport
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for DriftReport
impl RefUnwindSafe for DriftReport
impl Send for DriftReport
impl Sync for DriftReport
impl Unpin for DriftReport
impl UnsafeUnpin for DriftReport
impl UnwindSafe for DriftReport
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more