ic-bn-lib 0.2.3

Internet Computer Boundary Nodes shared modules
Documentation
use clap::Parser;
use ic_bn_lib::tls::acme::dns::cloudflare::Cloudflare;
use ic_bn_lib_common::traits::acme::DnsManager;

#[derive(Parser)]
pub struct Cli {
    #[clap(env, long)]
    pub zone: String,

    #[clap(env, long)]
    pub token: String,
}

#[tokio::main]
async fn main() {
    let cli = Cli::parse();

    let client = Cloudflare::new(
        "https://api.cloudflare.com/".parse().unwrap(),
        cli.token.clone(),
    )
    .unwrap();

    let zone_id = client.find_zone(&cli.zone).await.unwrap();
    println!("Zone {} found with id {zone_id}", cli.zone);

    let records = client.find_records(&zone_id, &cli.zone).await.unwrap();
    println!("Records: {records:?}");

    client
        .create(
            &cli.zone,
            "_foo_bar",
            ic_bn_lib_common::types::acme::Record::Txt("blah".into()),
            60,
        )
        .await
        .unwrap();

    client.delete(&cli.zone, "_foo_bar").await.unwrap();
}