cao 0.1.0

Update DNS record.


pub mod interface;

#[cfg(feature = "dnspod")]
mod dnspod;

use self::interface::{DnsProvider};
use crate::error::{Error};

fn provider_register(provider: &String)
-> Result<&dyn Fn(String, String) -> Result<Box<dyn DnsProvider>, Error>, Error> {
    match provider as &str {
        #[cfg(feature = "dnspod")]
        "dnspod" => Ok(&dnspod::Provider::build_provider),
        _ => Err(Error::UnimplementedProvider(provider.clone())),
    }
}

pub fn build_dns_provider(provider: String, key: String, domain: String)
-> Result<Box<dyn DnsProvider>, Error> {
    let func = provider_register(&provider)?;
    func(key, domain)
}