use namecheap_client::{Client, Environment, HostRecord, SetHostsRequest};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = Client::builder()
.api_user(std::env::var("NAMECHEAP_API_USER")?)
.api_key(std::env::var("NAMECHEAP_API_KEY")?)
.client_ip(std::env::var("NAMECHEAP_CLIENT_IP")?)
.environment(Environment::Sandbox)
.build()?;
let (sld, tld) = ("example", "com");
let current = client.domains().dns().get_hosts(sld, tld).await?;
println!(
"{} has {} record(s); using Namecheap DNS: {}",
current.domain,
current.records.len(),
current.is_using_our_dns
);
for record in ¤t.records {
println!(
" {:<20} {:<6} {}",
record.name, record.record_type, record.address
);
}
let mut records = current.to_host_records();
records.push(HostRecord::txt("_acme-challenge", "token-from-your-ca"));
let request = SetHostsRequest::new(sld, tld, records);
let result = client.domains().dns().set_hosts(&request).await?;
println!("updated: success = {}", result.is_success);
Ok(())
}