brazil-cep 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0a4a5033b0b8e49dbd7d48f464c76e857a30140c6e29be85ca3440ed45bec589
4
- data.tar.gz: ea457dfc8a836178131f231002907c5f6ae165d0f9124bbb7faa711a7e88784c
3
+ metadata.gz: 846ef72872222fae21a466e025f9366f3194e03330c350f82a2e7241e95b2680
4
+ data.tar.gz: 0a2df924f5d863cb398c027ec4b1c97686b3a966ca35a9e2202665f7e64a1133
5
5
  SHA512:
6
- metadata.gz: d632a23cd2e78c93392d3c405a9d9023efc4d639e69ddf3c7bc334b0ebaa48bf42a968067c18fea8e2cae8e7541b17ea56f6265ddfccf1c9bbe829e298b462ca
7
- data.tar.gz: 01e72027e7660a8b6f67a1730df08824bbfc72bcbed978d2c7ee2a87fd13901b62f7130ec0576d5b00fe0aeb3101afdb2196abec7d6df1f610288989bcff9f34
6
+ metadata.gz: 12722468d5c1e0187bee7d8c152239017f0c0e7ef256b3b34d46594028d5dbc84fb79db3d6402a8c677c1eacfeeb56ebfd47102e616108804b50f993a198bd4c
7
+ data.tar.gz: 98492724593be83d12735da04a735722108f435b50219c60ad7616bb0aecea70c28e22a8cfe9fc32385e14a1bbf98ab138a26c43a5ea32f40a2ac19a57fc59e7
@@ -0,0 +1,62 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Brazil
4
+ module Cep
5
+ module Adapters
6
+ # Correios Web provider adapter class
7
+ # This class is responsible for fetching the address information from the Correios Web provider
8
+ class CorreiosWeb < Base
9
+ provider base_url: "https://buscacepinter.correios.com.br/app/endereco/carrega-cep-endereco.php"
10
+
11
+ private
12
+
13
+ def http_request(uri, **options, &block)
14
+ http_options =
15
+ { open_timeout: open_timeout, read_timeout: read_timeout, write_timeout: write_timeout }
16
+ .update(**options)
17
+
18
+ http_options[:use_ssl] = uri.scheme == "https"
19
+
20
+ Net::HTTP.start(uri.host, uri.port, **http_options) do |http|
21
+ request = Net::HTTP::Post.new(uri)
22
+ request.set_form_data(params)
23
+ headers.each { |key, value| request[key] = value }
24
+
25
+ @response = http.request(request)
26
+
27
+ block.call(@response)
28
+ end
29
+ end
30
+
31
+ def headers
32
+ { "Referer" => "https://buscacepinter.correios.com.br/app/endereco/index.php" }
33
+ end
34
+
35
+ def params
36
+ { pagina: "/app/endereco/index.php", cepaux: nil, endereco: @cep, tipoCEP: "ALL" }
37
+ end
38
+
39
+ def transformation!
40
+ data = Array(@payload[:dados]).first
41
+ raise Brazil::Cep::ZipcodeNotFound, @response if data.nil?
42
+
43
+ street, *complement = data[:logradouroDNEC].split(" - ")
44
+
45
+ raise Brazil::Cep::ZipcodeNotFound, @response if data[:cep] != @cep.sub("-", "")
46
+
47
+ address_params = {
48
+ zipcode: data[:cep],
49
+ state: data[:uf],
50
+ city: data[:localidade],
51
+ neighborhood: data[:bairro],
52
+ street: street,
53
+ complement: complement.join(" - "),
54
+ meta: @payload.update(provider: :correios_web)
55
+ }
56
+
57
+ Brazil::Cep::Address.new(**address_params)
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
@@ -9,12 +9,14 @@ module Brazil
9
9
  autoload :Viacep, "brazil_cep/adapters/viacep"
10
10
  autoload :Postmon, "brazil_cep/adapters/postmon"
11
11
  autoload :RepublicaVirtual, "brazil_cep/adapters/republica_virtual"
12
+ autoload :CorreiosWeb, "brazil_cep/adapters/correios_web"
12
13
 
13
14
  # list of provider keys and classes
14
15
  PROVIDERS = {
15
16
  viacep: Viacep,
16
17
  postmon: Postmon,
17
- republica_virtual: RepublicaVirtual
18
+ republica_virtual: RepublicaVirtual,
19
+ correios_web: CorreiosWeb
18
20
  }
19
21
 
20
22
  private_constant :PROVIDERS
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Brazil
4
4
  module Cep
5
- VERSION = "0.3.0"
5
+ VERSION = "0.4.0"
6
6
  end
7
7
  end
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.3.0
4
+ version: 0.4.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-28 00:00:00.000000000 Z
11
+ date: 2024-03-29 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,6 +28,7 @@ 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/correios_web.rb
31
32
  - lib/brazil_cep/adapters/postmon.rb
32
33
  - lib/brazil_cep/adapters/republica_virtual.rb
33
34
  - lib/brazil_cep/adapters/viacep.rb