use acmex::challenge::{ChallengeSolverRegistry, Http01Solver};
use acmex::prelude::*;
use std::error::Error;
#[tokio::main]
async fn main() -> std::result::Result<(), Box<dyn Error>> {
let config = AcmeConfig::lets_encrypt_staging()
.with_contact(Contact::email("admin@example.com"))
.with_tos_agreed(true);
let mut client = AcmeClient::new(config)?;
println!("Registering account...");
client.register_account().await?;
println!("Account registered successfully.");
let mut registry = ChallengeSolverRegistry::new();
let http_solver = Http01Solver::default(); registry.register(http_solver);
println!("Requesting certificate for example.com...");
let domains = vec!["example.com".to_string()];
match client.issue_certificate(domains, &mut registry).await {
Ok(bundle) => {
println!("Certificate issued successfully!");
println!("Certificate PEM:\n{}", bundle.certificate_pem);
}
Err(e) => {
eprintln!("Failed to issue certificate: {}", e);
}
}
Ok(())
}