apibrasil 1.0.0

SDK oficial Rust da plataforma APIBrasil: WhatsApp, SMS, consultas de CPF/CNPJ, veiculos, CEP, correios, pagamentos PIX/boleto e mais.
Documentation
//! Leitura da configuração a partir das variáveis de ambiente.

use super::types::Config;

/// Bearer Token (JWT do login).
pub const ENV_BEARER_TOKEN: &str = "APIBRASIL_BEARER_TOKEN";
/// DeviceToken dos serviços device-based.
pub const ENV_DEVICE_TOKEN: &str = "APIBRASIL_DEVICE_TOKEN";
/// SecretKey usada na criação de devices.
pub const ENV_SECRET_KEY: &str = "APIBRASIL_SECRET_KEY";
/// Base da API.
pub const ENV_BASE_URL: &str = "APIBRASIL_BASE_URL";

/// Todas as variáveis de ambiente lidas pela SDK.
pub const ENV_VARS: &[&str] = &[
    ENV_BEARER_TOKEN,
    ENV_DEVICE_TOKEN,
    ENV_SECRET_KEY,
    ENV_BASE_URL,
];

impl Config {
    /// Lê a configuração das variáveis de ambiente
    /// [`ENV_BEARER_TOKEN`], [`ENV_DEVICE_TOKEN`], [`ENV_SECRET_KEY`] e
    /// [`ENV_BASE_URL`].
    ///
    /// Valores passados explicitamente na `Config` sempre têm
    /// prioridade — veja [`Config::merge`].
    pub fn from_env() -> Self {
        Self {
            bearer_token: var(ENV_BEARER_TOKEN),
            device_token: var(ENV_DEVICE_TOKEN),
            secret_key: var(ENV_SECRET_KEY),
            base_url: var(ENV_BASE_URL),
            ..Default::default()
        }
    }
}

fn var(name: &str) -> Option<String> {
    match std::env::var(name) {
        Ok(value) if !value.is_empty() => Some(value),
        _ => None,
    }
}