edsky / aliyun_dns

MIT License
6 stars 3 forks source link

Aliyun DNS API Client

This library provides a simple and easy-to-use client for interacting with the Aliyun DNS API. With this library, you can manage your domain records programmatically, including adding, updating, deleting, and querying records.

Usage

To use the library, first create a new AliyunDns instance, providing your access_key_id and access_key_secret:

use aliyun_dns::AliyunDns;

let access_key_id = "your_access_key_id";
let access_key_secret = "your_access_key_secret";
let aliyun_dns = AliyunDns::new(access_key_id.to_string(), access_key_secret.to_string());

Add a Domain Record

To add a domain record, use the add_domain_record method:

let domain_name = "example.com";
let sub_domain = "www";
let record_type = "A";
let record_value = "1.2.3.4";
let response = aliyun_dns.add_domain_record(domain_name, sub_domain, record_type, record_value).await?;
println!("Record ID: {}", response.record_id);

Update a Domain Record

To update a domain record, use the update_domain_record method:

let record_id = "your_record_id";
let sub_domain = "www";
let record_type = "A";
let new_value = "2.3.4.5";
let response = aliyun_dns.update_domain_record(record_id, sub_domain, record_type, new_value).await?;
println!("Updated Record ID: {}", response.record_id);

Delete a Domain Record

To delete a domain record, use the delete_domain_record method:

let record_id = "your_record_id";
let response = aliyun_dns.delete_domain_record(record_id).await?;
println!("Deleted Record ID: {}", response.record_id);

Delete Subdomain Records

To delete subdomain records, use the delete_subdomain_records method:

let domain_name = "example.com";
let rr = "www";
let response = aliyun_dns.delete_subdomain_records(domain_name, rr).await?;
println!("Deleted RR: {}, Total Count: {}", response.rr, response.total_count);

Query Domain Records

To query domain records, use the query_domain_records method:

let domain_name = "example.com";
let response = aliyun_dns.query_domain_records(domain_name).await?;
println!("Total Records: {}", response.total_count);

for record in response.domain_records.records {
    println!(
        "Record ID: {}, Type: {}, RR: {}, Value: {}",
        record.record_id, record.record_type, record.rr, record.value
    );
}

Example Program

Here is an example program that demonstrates how to use the AliyunDns client:

use aliyun_dns::AliyunDns;
use anyhow::Result;

#[tokio::main]
async fn main() -> Result<()> {
    let access_key_id = "your_access_key_id";
    let access_key_secret = "your_access_key_secret";
    let aliyun_dns = AliyunDns::new(access_key_id.to_string(), access_key_secret.to_string());

    // Add a domain record
    let domain_name = "example.com";
    let sub_domain = "www";
    let record_type = "A";
    let record_value = "1.2.3.4";
    let response = aliyun_dns.add_domain_record(domain_name, sub_domain, record_type, record_value).await?;
    println!("Record ID: {}", response.record_id);
    // Update a domain record
    let record_id = &response.record_id;
    let sub_domain = "www";
    let record_type = "A";
    let new_value = "2.3.4.5";
    let update_response = aliyun_dns.update_domain_record(record_id, sub_domain, record_type, new_value).await?;
    println!("Updated Record ID: {}", update_response.record_id);

    // Query domain records
    let query_response = aliyun_dns.query_domain_records(domain_name).await?;
    println!("Total Records: {}", query_response.total_count);
    for record in query_response.domain_records.records {
        println!(
            "Record ID: {}, Type: {}, RR: {}, Value: {}",
            record.record_id, record.record_type, record.rr, record.value
        );
    }

    // Delete a domain record
    let delete_response = aliyun_dns.delete_domain_record(record_id).await?;
    println!("Deleted Record ID: {}", delete_response.record_id);

    // Delete subdomain records
    let rr = "www";
    let delete_subdomain_response = aliyun_dns.delete_subdomain_records(domain_name, rr).await?;
    println!(
        "Deleted RR: {}, Total Count: {}",
        delete_subdomain_response.rr, delete_subdomain_response.total_count
    );

    Ok(())
}