feat: add dns.rs
This commit is contained in:
@@ -1,10 +1,53 @@
|
||||
use rust_util::XResult;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use aliyun_openapi_core_rust_sdk::RPClient;
|
||||
use crate::dns::DnsClient;
|
||||
|
||||
static ALI_DNS_ENDPOINT: &str = "https://alidns.aliyuncs.com";
|
||||
static ALI_DNS_API_VERSION: &str = "2015-01-09";
|
||||
|
||||
pub struct AlibabaCloudDnsClient {
|
||||
client: RPClient,
|
||||
}
|
||||
|
||||
impl AlibabaCloudDnsClient {
|
||||
pub fn build(supplier: &str) -> XResult<AlibabaCloudDnsClient> {
|
||||
let access_credential = simple_parse_aliyun_supplier(supplier)?;
|
||||
Ok(AlibabaCloudDnsClient {
|
||||
client: build_dns_client(&access_credential)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
impl DnsClient for AlibabaCloudDnsClient {
|
||||
fn list_dns(&mut self, domain: &str) -> XResult<Vec<crate::dns::DnsRecord>> {
|
||||
let list_dns_response = opt_result!(list_dns(&self.client, domain)?, "List dns records failed: {:?}");
|
||||
let mut dns_records = vec![];
|
||||
list_dns_response.domain_records.record.into_iter().for_each(|record| {
|
||||
dns_records.push(crate::dns::DnsRecord {
|
||||
id: record.record_id,
|
||||
domain: record.domain_name,
|
||||
rr: record.rr,
|
||||
r#type: record.r#type,
|
||||
ttl: record.ttl,
|
||||
value: record.value,
|
||||
});
|
||||
});
|
||||
Ok(dns_records)
|
||||
}
|
||||
|
||||
fn delete_dns_record(&mut self, record_id: &str) -> XResult<()> {
|
||||
opt_result!(delete_dns_record(&self.client, record_id)?, "Delete dns record failed: {:?}");
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn add_dns_record(&mut self, dns_record: &crate::dns::DnsRecord) -> XResult<()> {
|
||||
let _ = opt_result!(add_dns_record(&self.client, &dns_record.domain, &dns_record.rr, &dns_record.r#type, &dns_record.value),
|
||||
"Add dns record failed: {}");
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct AccessCredential {
|
||||
access_key_id: String,
|
||||
@@ -111,9 +154,9 @@ pub fn delete_dns_record(client: &RPClient, record_id: &str) -> XResult<Result<C
|
||||
parse_result("DeleteDomainRecord", &delete_domain_record_response)
|
||||
}
|
||||
|
||||
pub fn add_txt_dns_record(client: &RPClient, domain: &str, rr: &str, value: &str) -> XResult<Result<CommonSuccessResponse, CommonErrorResponse>> {
|
||||
add_dns_record(client, domain, rr, "TXT", value)
|
||||
}
|
||||
// pub fn add_txt_dns_record(client: &RPClient, domain: &str, rr: &str, value: &str) -> XResult<Result<CommonSuccessResponse, CommonErrorResponse>> {
|
||||
// add_dns_record(client, domain, rr, "TXT", value)
|
||||
// }
|
||||
|
||||
// domain -> "example.com"
|
||||
// rr -> "@", "_acme-challenge"
|
||||
|
||||
Reference in New Issue
Block a user