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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7c36775e47d48c4dadc9fae27db78abb372bacdd85cf58ac586d3c005ddc29ae
4
- data.tar.gz: 5b0a94be147182c7773dd201194041810b06cc4c0a6e784392dee72233dc4797
3
+ metadata.gz: efb5e77fe7bbbf7a1d8b0d9085123e20b8bea1a8371e375f07a1770d9731f206
4
+ data.tar.gz: 0f25bbfe4a1b64782d408d935ce9bb2ad77d04b5561fc6077395d1a8b4800ee8
5
5
  SHA512:
6
- metadata.gz: b88cefcb1d52ba0f54b77f6a808b9f962449f4fbc636c3491e9502c48747e1dd205e23887bcc126c7661bc48096beabc13ccab9d75695ec1b0bb033f091ceec1
7
- data.tar.gz: c04d5712613468e91dfe37ad9669634c5ec6991a4e2c36e9eaff43b8b3d21958612cac46cfd93bc8b6eccffbec885511132a601ec91c878bb9c7931542764a8e
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 imita um documento brasileiro; a fonte datilografada é a
195
- [Courier Prime](https://github.com/quoteunquoteapps/CourierPrime) (licença OFL, em
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 JSON.parse(corpo)
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
- private_class_method :buscar
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
@@ -2,5 +2,5 @@
2
2
 
3
3
  # Versão da gem, lida também pelo gemspec.
4
4
  module BrValidators
5
- VERSION = "0.3.1"
5
+ VERSION = "0.3.2"
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: br_validators
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pedro Pedrassolli