nfe_web/lib.rs
1//! # NFe Web API
2//!
3//! API REST e GraphQL de alto desempenho para Nota Fiscal Eletronica brasileira.
4//!
5//! ## Funcionalidades
6//!
7//! - **REST API**: Endpoints para parse, geracao e consulta de NF-e
8//! - **GraphQL API**: Schema completo com queries e mutations
9//! - **DANFE PDF**: Geracao de DANFE profissional
10//! - **Certificado A1**: Suporte a certificado digital .pfx/.p12
11//! - **SEFAZ WebService**: Cliente SOAP para integracao
12//! - **Leitura de PDF**: Extracao de dados de DANFE/NFS-e
13//!
14//! ## Performance
15//!
16//! Benchmarks em modo release:
17//!
18//! | Operacao | Tempo |
19//! |----------|-------|
20//! | Health Check | 2ms |
21//! | Parse XML | 3ms |
22//! | DANFE PDF | 3ms |
23//! | GraphQL | 5ms |
24//!
25//! ## Exemplo de Uso
26//!
27//! ```rust,no_run
28//! use nfe_web::{certificado, graphql, pdf, sefaz};
29//!
30//! // Validar chave de acesso
31//! let info = sefaz::validar_chave_acesso("35240508665074000100550010000000011270815480");
32//!
33//! // Gerar URL de consulta
34//! let url = sefaz::gerar_url_consulta_portal("35240508665074000100550010000000011270815480");
35//! ```
36//!
37//! ## Modulos
38//!
39//! - [`certificado`]: Manipulacao de certificados digitais A1
40//! - [`graphql`]: Schema e resolvers GraphQL
41//! - [`pdf`]: Leitura de PDF e geracao de DANFE
42//! - [`sefaz`]: Consulta e integracao com SEFAZ
43//! - [`db`]: Modelos e conexao com banco de dados
44
45#![doc(html_root_url = "https://docs.rs/nfe-web/0.2.1")]
46
47/// Modulo de certificado digital A1
48///
49/// Suporte a arquivos .pfx/.p12 para autenticacao com SEFAZ.
50///
51/// # Exemplo
52///
53/// ```rust,no_run
54/// use nfe_web::certificado::CertificadoA1;
55///
56/// let cert = CertificadoA1::from_file("certificado.pfx", "senha123")?;
57/// println!("CNPJ: {:?}", cert.info.cnpj);
58/// # Ok::<(), String>(())
59/// ```
60pub mod certificado;
61
62/// Modulo de banco de dados
63///
64/// Suporte a PostgreSQL e MySQL para persistencia de NF-e.
65pub mod db;
66
67/// API GraphQL
68///
69/// Schema completo com queries e mutations para NF-e.
70///
71/// # Queries
72///
73/// - `nfe(chaveAcesso)` - Consulta NF-e por chave
74/// - `validarChave(chave)` - Valida chave de acesso
75/// - `consultarSefaz(chaveAcesso)` - Consulta status no SEFAZ
76///
77/// # Mutations
78///
79/// - `emitirNfe(input)` - Emite NF-e no SEFAZ
80/// - `cancelarNfe(input)` - Cancela NF-e
81/// - `parseXml(xml)` - Parseia XML de NF-e
82pub mod graphql;
83
84/// Modulo de PDF
85///
86/// Leitura de DANFE/NFS-e e geracao de DANFE profissional.
87///
88/// # Exemplo
89///
90/// ```rust,no_run
91/// use nfe_web::pdf::{extract_danfe_data, gerar_danfe, DanfeInput};
92///
93/// // Ler dados de um PDF
94/// let bytes = std::fs::read("danfe.pdf")?;
95/// let dados = extract_danfe_data(&bytes)?;
96///
97/// // Gerar DANFE
98/// let input = DanfeInput { /* ... */ };
99/// let pdf_bytes = gerar_danfe(&input)?;
100/// # Ok::<(), Box<dyn std::error::Error>>(())
101/// ```
102pub mod pdf;
103
104/// Integracao com SEFAZ
105///
106/// Cliente SOAP para WebServices da SEFAZ e funcoes de validacao.
107///
108/// # Funcoes
109///
110/// - [`validar_chave_acesso`](sefaz::validar_chave_acesso) - Valida e extrai dados da chave
111/// - [`gerar_url_consulta_portal`](sefaz::gerar_url_consulta_portal) - Gera URL do portal
112/// - [`consultar_portal_publico`](sefaz::consultar_portal_publico) - Consulta via portal
113///
114/// # Exemplo
115///
116/// ```rust
117/// use nfe_web::sefaz;
118///
119/// let chave = "35240508665074000100550010000000011270815480";
120/// if let Ok(info) = sefaz::validar_chave_acesso(chave) {
121/// println!("UF: {}", info.uf);
122/// println!("CNPJ: {}", info.cnpj);
123/// println!("Numero: {}", info.numero);
124/// }
125/// ```
126pub mod sefaz;
127
128// Re-exports para conveniencia
129pub use certificado::{CertificadoA1, CertificadoInfo, AssinadorXml};
130pub use graphql::{create_schema, NfeSchema};
131pub use pdf::{extract_danfe_data, gerar_danfe, DanfeData, DanfeInput};
132pub use sefaz::{validar_chave_acesso, gerar_url_consulta_portal, ChaveAcessoInfo, ResultadoConsulta};