br_validators 0.3.1 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -0
- data/README.md +2 -2
- data/lib/br_validators/consulta.rb +15 -2
- data/lib/br_validators/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: efb5e77fe7bbbf7a1d8b0d9085123e20b8bea1a8371e375f07a1770d9731f206
|
|
4
|
+
data.tar.gz: 0f25bbfe4a1b64782d408d935ce9bb2ad77d04b5561fc6077395d1a8b4800ee8
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 42d3a0a47f4be7a1f466dfc4f2cfffc509e13a071f0101ea51cb360abb996eab5ef905072fe5a730bab910a76f56eb4d21d5f41077ec88382045b403173fd7a5
|
|
7
|
+
data.tar.gz: b74d59c56e94d02f0dcc240213866a3ee28651c8126d740274c908d175d186d7fddd6d47fada7db7b14662f4c4e28966ab3f1c7116e20c4f7ed08d470509f93b
|
data/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,16 @@
|
|
|
3
3
|
As mudanças de cada versão ficam aqui. O projeto segue o
|
|
4
4
|
[versionamento semântico](https://semver.org/lang/pt-BR/).
|
|
5
5
|
|
|
6
|
+
## [0.3.2] - 2026-11-03
|
|
7
|
+
|
|
8
|
+
### Corrigido
|
|
9
|
+
|
|
10
|
+
- `Consulta` (CEP, CNPJ, banco e DDD) só aceita como resposta da BrasilAPI um objeto JSON.
|
|
11
|
+
Corpo vazio, `null`, número ou lista agora levantam `Consulta::Erro`; antes passavam e
|
|
12
|
+
quebravam depois, em quem usava o resultado (a API de CNPJ da calculadora devolvia erro 500).
|
|
13
|
+
- Bytes que não são UTF-8 no corpo da resposta viram `�` em vez de ficarem nos textos. Antes,
|
|
14
|
+
um nome com esse problema fazia o `JSON.generate` do resultado levantar erro.
|
|
15
|
+
|
|
6
16
|
## [0.3.1] - 2026-10-31
|
|
7
17
|
|
|
8
18
|
### Corrigido
|
data/README.md
CHANGED
|
@@ -191,8 +191,8 @@ Ruby que faz o mesmo.
|
|
|
191
191
|
|
|
192
192
|
A página (`public/`) é HTML, CSS e JavaScript puro, sem build, e chama uma função Ruby
|
|
193
193
|
da Vercel (`api/validar.rb`) que usa a própria gem, então as regras ficam num lugar só.
|
|
194
|
-
O visual
|
|
195
|
-
[
|
|
194
|
+
O visual segue o do [portfólio do autor](https://pedrassolli.vercel.app), com as fontes
|
|
195
|
+
[Geist e Geist Mono](https://github.com/vercel/geist-font) (licença OFL, em
|
|
196
196
|
`public/fontes`).
|
|
197
197
|
|
|
198
198
|
```
|
|
@@ -80,7 +80,7 @@ module BrValidators
|
|
|
80
80
|
def self.buscar(caminho)
|
|
81
81
|
status, corpo = cliente.get(URI("#{BASE}#{caminho}"))
|
|
82
82
|
case status
|
|
83
|
-
when 200 then
|
|
83
|
+
when 200 then objeto(corpo, caminho)
|
|
84
84
|
when 400, 404 then nil
|
|
85
85
|
else raise Erro, "A BrasilAPI respondeu #{status} em #{caminho}."
|
|
86
86
|
end
|
|
@@ -88,7 +88,20 @@ module BrValidators
|
|
|
88
88
|
raise Erro, "A BrasilAPI respondeu algo que não é JSON em #{caminho}."
|
|
89
89
|
end
|
|
90
90
|
|
|
91
|
-
|
|
91
|
+
# O corpo de um 200 vira Hash. Duas coisas que antes passavam e estouravam depois, em
|
|
92
|
+
# quem usa o resultado (viravam erro 500 na API da calculadora):
|
|
93
|
+
# - o Net::HTTP entrega o corpo sem encoding, e bytes que não são UTF-8 ficavam nos
|
|
94
|
+
# textos e quebravam o JSON.generate; o scrub troca esses bytes por "�";
|
|
95
|
+
# - a BrasilAPI sempre responde um objeto: nulo, número ou lista é resposta quebrada,
|
|
96
|
+
# e o corpo vazio (nil) cai no "não é JSON".
|
|
97
|
+
def self.objeto(corpo, caminho)
|
|
98
|
+
dados = JSON.parse(corpo.to_s.dup.force_encoding(Encoding::UTF_8).scrub)
|
|
99
|
+
return dados if dados.is_a?(Hash)
|
|
100
|
+
|
|
101
|
+
raise Erro, "A BrasilAPI respondeu algo que não é um objeto JSON em #{caminho}."
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
private_class_method :buscar, :objeto
|
|
92
105
|
|
|
93
106
|
# Cliente padrão, só com a biblioteca padrão do Ruby (Net::HTTP).
|
|
94
107
|
module HTTP
|