claps 0.2.0

CLIs written in Rust
Documentation
use anyhow::Result;
use serde::Deserialize;

use crate::api::cloudflare::auth::Auth;
use crate::api::cloudflare::dns::Record;
use crate::api::cloudflare::Client;
use crate::common::log::LogResult;

impl Client {
    pub async fn list(&self, zone: &str, name: &str) -> Result<Vec<Record>> {
        let response = self
            .client
            .get(&format!("{}/zones/{}/dns_records", self.api, zone))
            .auth(&self.token)
            .query(&[("name", name)])
            .send()
            .await
            .log()?;
        let response = response.error_for_status().log()?;
        let response: Response = response.json().await.log()?;
        crate::ensure!(response.success);
        Ok(response.result)
    }
}

#[derive(Debug, Deserialize)]
struct Response {
    result: Vec<Record>,
    success: bool,
}