pagbank-cli 0.2.0

CLI para as APIs do PagBank
use anyhow::Result;

use crate::cli::PreferencesAction;
use crate::output;

pub async fn run(
    action: PreferencesAction,
    env_override: Option<&str>,
    output_fmt: &crate::cli::OutputFormat,
) -> Result<()> {
    let client = crate::client::load_client(env_override)?;

    match action {
        PreferencesAction::Get => {
            let result = pagbank_sdk::endpoints::preferences::get_preferences(&client).await?;
            match output_fmt {
                crate::cli::OutputFormat::Json => output::print_json(&result),
                crate::cli::OutputFormat::Table => {
                    output::print_object_table("Preferências de Notificação", &result)
                }
            }
            Ok(())
        }
        PreferencesAction::Update { body } => {
            let body_val: serde_json::Value = serde_json::from_str(&body)?;
            let result =
                pagbank_sdk::endpoints::preferences::update_preferences(&client, &body_val).await?;
            match output_fmt {
                crate::cli::OutputFormat::Json => output::print_json(&result),
                crate::cli::OutputFormat::Table => {
                    output::print_object_table("Preferências Atualizadas", &result)
                }
            }
            Ok(())
        }
        PreferencesAction::EncryptionKeyGet => {
            let result = pagbank_sdk::endpoints::preferences::get_encryption_key(&client).await?;
            match output_fmt {
                crate::cli::OutputFormat::Json => output::print_json(&result),
                crate::cli::OutputFormat::Table => {
                    output::print_object_table("Chave de Criptografia", &result)
                }
            }
            Ok(())
        }
        PreferencesAction::EncryptionKeyCreate { body } => {
            let body_val: serde_json::Value = serde_json::from_str(&body)?;
            let result =
                pagbank_sdk::endpoints::preferences::create_encryption_key(&client, &body_val)
                    .await?;
            match output_fmt {
                crate::cli::OutputFormat::Json => output::print_json(&result),
                crate::cli::OutputFormat::Table => {
                    output::print_object_table("Chave de Criptografia Criada", &result)
                }
            }
            Ok(())
        }
    }
}