pub struct DnsProviderAdapter<D> {
dns: Arc<D>,
}Expand description
Adapts any [didbot_dns::DnsProvider] into an AcmeDnsChallenge.
See the module docs for why this is safe to be this thin: the provider’s
own [DnsProvider::publish_txt]/[DnsProvider::withdraw_txt] are
already additive and idempotent per value, so publishing a set is just
diffing that set against [DnsProvider::txt_values] and issuing one call
per value that needs to change. Both directions of that diff run to
completion (including waiting for propagation, on a backend that does
that — see Route53Dns) before Self::publish_challenge or
Self::clear_challenge return, so a caller sequencing several names —
as crate::acme::issue does — never proceeds to the next step with a
change still in flight underneath it.
Fields§
§dns: Arc<D>Implementations§
Trait Implementations§
Source§impl<D: DnsProvider> AcmeDnsChallenge for DnsProviderAdapter<D>
impl<D: DnsProvider> AcmeDnsChallenge for DnsProviderAdapter<D>
Source§fn publish_challenge(
&self,
name: &str,
values: &[String],
) -> Result<(), AcmeDnsError>
fn publish_challenge( &self, name: &str, values: &[String], ) -> Result<(), AcmeDnsError>
Publishes exactly
values as TXT records at name, replacing
whatever this backend had published there before. Read moreSource§fn clear_challenge(&self, name: &str) -> Result<(), AcmeDnsError>
fn clear_challenge(&self, name: &str) -> Result<(), AcmeDnsError>
Removes every value published at
name. Read moreAuto Trait Implementations§
impl<D> Freeze for DnsProviderAdapter<D>
impl<D> RefUnwindSafe for DnsProviderAdapter<D>where
D: RefUnwindSafe,
impl<D> Send for DnsProviderAdapter<D>
impl<D> Sync for DnsProviderAdapter<D>
impl<D> Unpin for DnsProviderAdapter<D>
impl<D> UnsafeUnpin for DnsProviderAdapter<D>
impl<D> UnwindSafe for DnsProviderAdapter<D>where
D: RefUnwindSafe,
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§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
Mutably borrows from an owned value. Read more