rbytes_consulta_cep 0.1.0

Consulta de CEP brasileiro com multi-provedores (ViaCEP, BrasilAPI, etc). Inclui fallback automático, timeout configurável e formatação de endereços.
Documentation
// src/providers/mod.rs
pub mod viacep;
pub mod brasilapi;
pub mod apicep;
pub mod opencep;

pub use viacep::consultar as viacep;
pub use brasilapi::consultar as brasilapi;
pub use apicep::consultar as apicep;
pub use opencep::consultar as opencep;

#[derive(Debug, Clone, Copy, PartialEq)]
pub enum ProviderType {
    ViaCep,
    BrasilApi,
    ApiCep,
    OpenCep,
}

impl std::fmt::Display for ProviderType {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        write!(f, "{}", match self {
            Self::ViaCep => "ViaCEP",
            Self::BrasilApi => "BrasilAPI",
            Self::ApiCep => "ApiCEP",
            Self::OpenCep => "OpenCEP",
        })
    }
}

pub async fn consultar(
    provider: ProviderType,  // Primeiro parâmetro: tipo do provedor
    cep: &str               // Segundo parâmetro: CEP como string
) -> Result<crate::models::Endereco, crate::error::CepError> {
    match provider {
        ProviderType::ViaCep => viacep::consultar(cep).await,
        ProviderType::BrasilApi => brasilapi::consultar(cep).await,
        ProviderType::ApiCep => apicep::consultar(cep).await,
        ProviderType::OpenCep => opencep::consultar(cep).await,
    }
}