aliyun_dns 0.1.2

A Rust library for working with the Aliyun DNS API
Documentation
## 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`:

```rust
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:

```rust
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:

```rust
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:

```rust
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:

```rust
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:

```rust
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:

```rust
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(())
}
```