brazil-cep 0.4.0 → 0.6.0

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: 846ef72872222fae21a466e025f9366f3194e03330c350f82a2e7241e95b2680
4
- data.tar.gz: 0a2df924f5d863cb398c027ec4b1c97686b3a966ca35a9e2202665f7e64a1133
3
+ metadata.gz: 3b6a482e30331189ae73fb675f920a696ae0ac1f149a901af0a904b994a22ab1
4
+ data.tar.gz: 7777a369accd8ddb00787a6de3e3309741b12a66e46a1715dbe9527d95987126
5
5
  SHA512:
6
- metadata.gz: 12722468d5c1e0187bee7d8c152239017f0c0e7ef256b3b34d46594028d5dbc84fb79db3d6402a8c677c1eacfeeb56ebfd47102e616108804b50f993a198bd4c
7
- data.tar.gz: 98492724593be83d12735da04a735722108f435b50219c60ad7616bb0aecea70c28e22a8cfe9fc32385e14a1bbf98ab138a26c43a5ea32f40a2ac19a57fc59e7
6
+ metadata.gz: d3abd9da32f1f14f407c9f7a25c7f4b927ef44f296388e52bfbd5cf8282d58a35fc6735e85406d96fda0a4b48aa80ad2dcdf455befd88910ce0b2f8b82b51c64
7
+ data.tar.gz: c223abc23472b50299c5618a819a38bd4e9761522dbee81cadf615d88325523cca8c81ac2674718c64253840fee188a1f7c26279102a9d44db4decb65b4cfb1f
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Brazil
4
+ module Cep
5
+ module Adapters
6
+ # Cep Aberto provider adapter class
7
+ # This class is responsible for fetching the address information from the Cep Aberto provider
8
+ class CepAberto < Base
9
+ provider base_url: "https://www.cepaberto.com/ceps/{{cep}}.json"
10
+
11
+ private
12
+
13
+ def transformation!
14
+ raise Brazil::Cep::ZipcodeNotFound, @response if @payload[:erro] == true
15
+
16
+ address_params = {
17
+ zipcode: @payload[:cep],
18
+ state: @payload[:estado][:sigla],
19
+ city: @payload[:cidade][:nome],
20
+ neighborhood: @payload[:bairro],
21
+ street: @payload[:logradouro],
22
+ complement: @payload[:complemento],
23
+ meta: @payload.update(provider: :cep_aberto)
24
+ }
25
+
26
+ Brazil::Cep::Address.new(**address_params)
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -10,13 +10,15 @@ module Brazil
10
10
  autoload :Postmon, "brazil_cep/adapters/postmon"
11
11
  autoload :RepublicaVirtual, "brazil_cep/adapters/republica_virtual"
12
12
  autoload :CorreiosWeb, "brazil_cep/adapters/correios_web"
13
+ autoload :CepAberto, "brazil_cep/adapters/cep_aberto"
13
14
 
14
15
  # list of provider keys and classes
15
16
  PROVIDERS = {
16
17
  viacep: Viacep,
17
18
  postmon: Postmon,
18
19
  republica_virtual: RepublicaVirtual,
19
- correios_web: CorreiosWeb
20
+ correios_web: CorreiosWeb,
21
+ cep_aberto: CepAberto
20
22
  }
21
23
 
22
24
  private_constant :PROVIDERS
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+
4
+ module Brazil
5
+ module Cep
6
+ # CEP ranges by state
7
+ RANGES = {
8
+ "AC" => (69900000..69999999),
9
+ "AL" => (57000000..57999999),
10
+ "AP" => (68900000..68999999),
11
+ "AM" => (69000000..69299999),
12
+ "BA" => (40000000..48999999),
13
+ "CE" => (60000000..63999999),
14
+ "DF" => (70000000..73699999),
15
+ "ES" => (29000000..29999999),
16
+ "GO" => (72800000..76799999),
17
+ "MA" => (65000000..65999999),
18
+ "MT" => (78000000..78899999),
19
+ "MS" => (79000000..79999999),
20
+ "MG" => (30000000..39999999),
21
+ "PA" => (66000000..68899999),
22
+ "PB" => (58000000..58999999),
23
+ "PR" => (80000000..87999999),
24
+ "PE" => (50000000..56999999),
25
+ "PI" => (64000000..64999999),
26
+ "RJ" => (20000000..28999999),
27
+ "RN" => (59000000..59999999),
28
+ "RS" => (90000000..99999999),
29
+ "RO" => (76800000..76999999),
30
+ "RR" => (69300000..69399999),
31
+ "SC" => (88000000..89999999),
32
+ "SP" => (01000000..19999999),
33
+ "SE" => (49000000..49999999),
34
+ "TO" => (77000000..77999999)
35
+ }.freeze
36
+
37
+ # Validation module
38
+ module Validation
39
+ def self.included(base)
40
+ base.extend(ClassMethods)
41
+ end
42
+
43
+ module ClassMethods
44
+ def valid?(cep)
45
+ cep = cep.to_s.gsub(/\D/, "")
46
+ return false if cep.size != 8
47
+
48
+ RANGES.values.any? do |group|
49
+ group.cover?(cep.to_i)
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -2,6 +2,7 @@
2
2
 
3
3
  module Brazil
4
4
  module Cep
5
- VERSION = "0.4.0"
5
+ # gem version
6
+ VERSION = "0.6.0"
6
7
  end
7
8
  end
data/lib/brazil_cep.rb CHANGED
@@ -3,6 +3,7 @@
3
3
  require_relative "brazil_cep/version"
4
4
  require_relative "brazil_cep/address"
5
5
  require_relative "brazil_cep/adapters"
6
+ require_relative "brazil_cep/validation"
6
7
 
7
8
  module Brazil
8
9
  # Brazil::Cep providers a simple way to fetch address information from a Brazilian CEP
@@ -27,6 +28,8 @@ module Brazil
27
28
  # zipcode not found error class
28
29
  class ZipcodeNotFound < RequestError; end
29
30
 
31
+ include Validation
32
+
30
33
  # fetch address information from a Brazilian CEP
31
34
  # @param [String] cep the CEP to fetch
32
35
  # @return [Hash] the address information
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: brazil-cep
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Vinciguerra
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-03-29 00:00:00.000000000 Z
11
+ date: 2025-01-30 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Brazil::CEP is a gem to provide interface to use common CEP services
14
14
  email:
@@ -28,11 +28,13 @@ files:
28
28
  - lib/brazil_cep.rb
29
29
  - lib/brazil_cep/adapters.rb
30
30
  - lib/brazil_cep/adapters/base.rb
31
+ - lib/brazil_cep/adapters/cep_aberto.rb
31
32
  - lib/brazil_cep/adapters/correios_web.rb
32
33
  - lib/brazil_cep/adapters/postmon.rb
33
34
  - lib/brazil_cep/adapters/republica_virtual.rb
34
35
  - lib/brazil_cep/adapters/viacep.rb
35
36
  - lib/brazil_cep/address.rb
37
+ - lib/brazil_cep/validation.rb
36
38
  - lib/brazil_cep/version.rb
37
39
  - sig/brazil/cep.rbs
38
40
  homepage: https://github.com/dvinciguerra/brazil-cep