sigep_web 0.2.7 → 1.0.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.
Files changed (37) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/ruby.yml +31 -0
  3. data/.gitignore +4 -3
  4. data/README.md +1 -2
  5. data/lib/sigep_web.rb +9 -9
  6. data/lib/sigep_web/calculate_digit_checker.rb +21 -18
  7. data/lib/sigep_web/generate_labels_digit_verifier.rb +20 -19
  8. data/lib/sigep_web/models/additional_service.rb +14 -0
  9. data/lib/sigep_web/models/dimension_object.rb +18 -0
  10. data/lib/sigep_web/models/postal_object.rb +27 -0
  11. data/lib/sigep_web/{Models → models}/receiver.rb +3 -0
  12. data/lib/sigep_web/{Models → models}/sender.rb +3 -0
  13. data/lib/sigep_web/postage_card_status.rb +15 -18
  14. data/lib/sigep_web/request_labels.rb +43 -43
  15. data/lib/sigep_web/request_plp_services.rb +25 -25
  16. data/lib/sigep_web/request_range.rb +28 -24
  17. data/lib/sigep_web/request_xml_plp.rb +18 -19
  18. data/lib/sigep_web/search_client.rb +20 -20
  19. data/lib/sigep_web/service_availability.rb +26 -25
  20. data/lib/sigep_web/version.rb +3 -1
  21. data/lib/sigep_web/web_service_interface_api.rb +4 -5
  22. data/lib/sigep_web/web_service_reverse_logistic_api.rb +5 -3
  23. data/lib/sigep_web/xml/additional_service.rb +27 -0
  24. data/lib/sigep_web/{XML → xml}/dimension_object.rb +3 -0
  25. data/lib/sigep_web/xml/postal_object.rb +54 -0
  26. data/lib/sigep_web/{XML → xml}/receiver.rb +3 -0
  27. data/lib/sigep_web/zip_query.rb +15 -16
  28. data/sigep_web.gemspec +19 -10
  29. metadata +130 -69
  30. data/.codeclimate.yml +0 -28
  31. data/.travis.yml +0 -4
  32. data/Gemfile.lock +0 -98
  33. data/lib/sigep_web/Models/additional_service.rb +0 -12
  34. data/lib/sigep_web/Models/dimension_object.rb +0 -15
  35. data/lib/sigep_web/Models/postal_object.rb +0 -21
  36. data/lib/sigep_web/XML/additional_service.rb +0 -24
  37. data/lib/sigep_web/XML/postal_object.rb +0 -50
@@ -1,36 +1,40 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SigepWeb
2
4
  class RequestRange < WebServiceReverseLogisticApi
3
- def initialize(options = {})
4
- @type = options[:type]
5
- @service = options[:service]
6
- @quantity = options[:quantity]
5
+ def initialize(type:, service:, quantity:)
6
+ @type = type
7
+ @service = service
8
+ @quantity = quantity
9
+
7
10
  super()
8
11
  end
9
12
 
10
13
  def request
11
14
  authenticate = SigepWeb.configuration.authenticate
12
15
 
13
- begin
14
- response = process(:solicitar_range, {
15
- usuario: authenticate.user,
16
- senha: authenticate.password,
17
- codAdministrativo: authenticate.administrative_code,
18
- contrato: authenticate.contract,
19
- tipo: @type,
20
- servico: @service,
21
- quantidade: @quantity
22
- }).to_hash[:solicitar_range_response][:return]
23
-
24
- {
25
- success: true,
26
- response: response
27
- }
28
- rescue Savon::SOAPFault => msg
29
- {
30
- success: false,
31
- error: msg
32
- }
16
+ response = process(:solicitar_range,
17
+ usuario: authenticate.user,
18
+ senha: authenticate.password,
19
+ codAdministrativo: authenticate.administrative_code,
20
+ contrato: authenticate.contract,
21
+ tipo: type,
22
+ servico: service,
23
+ quantidade: quantity
24
+ ).to_hash[:solicitar_range_response][:return]
25
+
26
+ if response[:cod_erro] == '0'
27
+ { success: true, response: response }
28
+ else
29
+ { success: false, error: response[:msg_erro] }
33
30
  end
31
+ rescue Savon::SOAPFault => e
32
+ { success: false, error: e.message }
34
33
  end
34
+
35
+ private
36
+
37
+ attr_reader :type, :service, :quantity
35
38
  end
36
39
  end
40
+
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SigepWeb
2
4
  class RequestXmlPlp < WebServiceInterfaceApi
3
- def initialize(options = {})
4
- @id_plp = options[:id_plp]
5
+ def initialize(id_plp:)
6
+ @id_plp = id_plp
5
7
 
6
8
  super()
7
9
  end
@@ -9,23 +11,20 @@ module SigepWeb
9
11
  def request
10
12
  authenticate = SigepWeb.configuration.authenticate
11
13
 
12
- begin
13
- response = process(:solicita_xml_plp, {
14
- idPlpMaster: @id_plp,
15
- usuario: authenticate.user,
16
- senha: authenticate.password
17
- }).to_hash[:solicita_xml_plp_response][:return]
18
-
19
- {
20
- success: true,
21
- response: response
22
- }
23
- rescue Savon::SOAPFault => msg
24
- {
25
- success: false,
26
- error: msg
27
- }
28
- end
14
+ response = process(:solicita_xml_plp,
15
+ idPlpMaster: id_plp,
16
+ usuario: authenticate.user,
17
+ senha: authenticate.password
18
+ ).to_hash[:solicita_xml_plp_response][:return]
19
+
20
+ { success: true, response: response }
21
+ rescue Savon::SOAPFault => e
22
+ { success: false, error: e.message }
29
23
  end
24
+
25
+ private
26
+
27
+ attr_reader :id_plp
30
28
  end
31
29
  end
30
+
@@ -1,31 +1,31 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SigepWeb
2
4
  class SearchClient < WebServiceInterfaceApi
3
- def initialize(options = {})
4
- @id_contract = options[:id_contract]
5
- @id_post_card = options[:id_post_card]
5
+ def initialize(id_contract:, id_post_card:)
6
+ @id_contract = id_contract
7
+ @id_post_card = id_post_card
8
+
6
9
  super()
7
10
  end
8
11
 
9
12
  def request
10
13
  authenticate = SigepWeb.configuration.authenticate
11
- begin
12
- response = process(:busca_cliente, {
13
- idContrato: @id_contract,
14
- idCartaoPostagem: @id_post_card,
15
- usuario: authenticate.user,
16
- senha: authenticate.password
17
- }).to_hash[:busca_cliente_response][:return]
18
14
 
19
- {
20
- success: true,
21
- response: response
22
- }
23
- rescue Savon::SOAPFault => msg
24
- {
25
- success: false,
26
- error: msg
27
- }
28
- end
15
+ response = process(:busca_cliente,
16
+ idContrato: id_contract,
17
+ idCartaoPostagem: id_post_card,
18
+ usuario: authenticate.user,
19
+ senha: authenticate.password
20
+ ).to_hash[:busca_cliente_response][:return]
21
+
22
+ { success: true, response: response }
23
+ rescue Savon::SOAPFault => e
24
+ { success: false, error: e.message }
29
25
  end
26
+
27
+ private
28
+
29
+ attr_reader :id_contract, :id_post_card
30
30
  end
31
31
  end
@@ -1,34 +1,35 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SigepWeb
2
4
  class ServiceAvailability < WebServiceInterfaceApi
3
- def initialize(options = {})
4
- @service_number = options[:service_number]
5
- @source_zip = options[:source_zip]
6
- @target_zip = options[:target_zip]
5
+ def initialize(service_number:, source_zip:, target_zip:)
6
+ @service_number = service_number
7
+ @source_zip = source_zip
8
+ @target_zip = target_zip
9
+
7
10
  super()
8
11
  end
9
12
 
10
13
  def request
11
- begin
12
- authenticate = SigepWeb.configuration.authenticate
13
- response = process(:verifica_disponibilidade_servico, {
14
- codAdministrativo: authenticate.administrative_code,
15
- numeroServico: @service_number,
16
- cepOrigem: @source_zip,
17
- cepDestino: @target_zip,
18
- usuario: authenticate.user,
19
- senha: authenticate.password
20
- }).to_hash[:verifica_disponibilidade_servico_response][:return]
21
-
22
- {
23
- success: true,
24
- response: response
25
- }
26
- rescue Savon::SOAPFault => msg
27
- {
28
- success: false,
29
- error: msg
30
- }
31
- end
14
+ authenticate = SigepWeb.configuration.authenticate
15
+
16
+ response = process(:verifica_disponibilidade_servico,
17
+ codAdministrativo: authenticate.administrative_code,
18
+ numeroServico: service_number,
19
+ cepOrigem: source_zip,
20
+ cepDestino: target_zip,
21
+ usuario: authenticate.user,
22
+ senha: authenticate.password
23
+ ).to_hash[:verifica_disponibilidade_servico_response][:return]
24
+
25
+ { success: true, response: response }
26
+ rescue Savon::SOAPFault => e
27
+ { success: false, error: e.message }
32
28
  end
29
+
30
+ private
31
+
32
+ attr_reader :service_number, :source_zip, :target_zip
33
33
  end
34
34
  end
35
+
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SigepWeb
2
- VERSION = '0.2.7'
4
+ VERSION = '1.0.0'
3
5
  end
@@ -1,10 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SigepWeb
2
4
  class WebServiceInterfaceApi
3
- def initialize
4
- @client = Savon.client({
5
- wsdl: url,
6
- ssl_verify_mode: :none
7
- })
5
+ def initialize(default_transfer = Savon)
6
+ @client = default_transfer.client(wsdl: url, ssl_verify_mode: :none)
8
7
  end
9
8
 
10
9
  def process(method, message)
@@ -1,14 +1,16 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SigepWeb
2
4
  class WebServiceReverseLogisticApi
3
5
  def initialize
4
- @client = Savon.client({
6
+ @client = Savon.client(
5
7
  wsdl: url,
6
8
  ssl_verify_mode: :none
7
- })
9
+ )
8
10
  end
9
11
 
10
12
  def process(method, message)
11
- @client.call(method, soap_action: "", message: message)
13
+ @client.call(method, soap_action: '', message: message)
12
14
  end
13
15
 
14
16
  private
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SigepWeb
4
+ module XML
5
+ class AdditionalService
6
+ def initialize(builder, additional_service)
7
+ @builder = builder
8
+ @additional_service = additional_service
9
+ end
10
+
11
+ def build_xml
12
+ @builder.servico_adicional do
13
+ if @additional_service
14
+ @additional_service.codes.each do |code|
15
+ @builder.codigo_servico_adicional code
16
+ end
17
+
18
+ @builder.codigo_servico_adicional "025"
19
+
20
+ @builder.valor_declarado @additional_service.declareted_value
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SigepWeb
2
4
  module XML
3
5
  class DimensionObject
@@ -18,3 +20,4 @@ module SigepWeb
18
20
  end
19
21
  end
20
22
  end
23
+
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SigepWeb
4
+ module XML
5
+ class PostalObject
6
+ def initialize(builder, postal_objects = [])
7
+ @builder = builder
8
+ @postal_objects = postal_objects
9
+ end
10
+
11
+ def build_xml
12
+ @postal_objects.each do |postal_object|
13
+ @builder.objeto_postal do
14
+ build_object(postal_object)
15
+ end
16
+ end
17
+ end
18
+
19
+ private
20
+
21
+ def build_object(postal_object)
22
+ @builder.numero_etiqueta postal_object.label_number
23
+ @builder.codigo_objeto_cliente
24
+ @builder.codigo_servico_postagem postal_object.postage_code_service
25
+ @builder.cubagem postal_object.cubage
26
+ @builder.peso postal_object.weight
27
+ @builder.rt1
28
+ @builder.rt2
29
+
30
+ XML::Receiver.new(@builder, postal_object.receiver).build_xml
31
+
32
+ @builder.servico_adicional do
33
+ @builder.codigo_servico_adicional "025"
34
+
35
+ if postal_object.additional_service_codes
36
+ postal_object.additional_service_codes.each do |code|
37
+ @builder.codigo_servico_adicional code
38
+ end
39
+ end
40
+
41
+ @builder.valor_declarado postal_object.additional_services_declared_value
42
+ end
43
+
44
+ XML::DimensionObject.new(@builder, postal_object.dimension_object).build_xml
45
+
46
+ @builder.data_postagem_sara
47
+ @builder.status_processamento postal_object.processing_status
48
+ @builder.numero_comprovante_postagem
49
+ @builder.valor_cobrado
50
+ end
51
+ end
52
+ end
53
+ end
54
+
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SigepWeb
2
4
  module XML
3
5
  class Receiver
@@ -35,3 +37,4 @@ module SigepWeb
35
37
  end
36
38
  end
37
39
  end
40
+
@@ -1,26 +1,25 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SigepWeb
2
4
  class ZipQuery < WebServiceInterfaceApi
3
- def initialize(options = {})
4
- @zip = options[:zip]
5
+ def initialize(zip:)
6
+ @zip = zip
7
+
5
8
  super()
6
9
  end
7
10
 
8
11
  def request
9
- begin
10
- response = process(:consulta_cep, {
11
- cep: @zip
12
- }).to_hash[:consulta_cep_response][:return]
12
+ response = process(
13
+ :consulta_cep, cep: zip
14
+ ).to_hash[:consulta_cep_response][:return]
13
15
 
14
- {
15
- success: true,
16
- response: response
17
- }
18
- rescue Savon::SOAPFault => msg
19
- {
20
- success: false,
21
- error: msg
22
- }
23
- end
16
+ { success: true, response: response }
17
+ rescue Savon::SOAPFault => e
18
+ { success: false, error: e.message }
24
19
  end
20
+
21
+ private
22
+
23
+ attr_reader :zip
25
24
  end
26
25
  end
data/sigep_web.gemspec CHANGED
@@ -14,20 +14,29 @@ Gem::Specification.new do |spec|
14
14
  spec.homepage = 'https://github.com/marceloperini/sigep_web'
15
15
  spec.license = 'MIT'
16
16
 
17
- spec.rubyforge_project = 'sigep_web'
18
-
19
17
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
20
18
  spec.bindir = 'exe'
21
19
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
20
  spec.require_paths = ['lib']
23
21
 
24
- spec.add_dependency 'savon', '~> 2.10', '>= 2.10.0'
25
- spec.add_dependency 'nokogiri', '~> 1.8', '>= 1.8.1'
22
+ spec.required_rubygems_version = ">= 1.3.6"
23
+
24
+ # Ruby 2.4 reaches EoL at the end of March of 2020
25
+ # https://www.ruby-lang.org/en/news/2019/10/02/ruby-2-4-9-released/
26
+ spec.required_ruby_version = ">= 2.4.0"
27
+
28
+ spec.add_dependency 'savon', '~> 2.10'
29
+ spec.add_dependency 'nokogiri', '>= 1.10.8'
26
30
 
27
- spec.add_development_dependency 'bundler', '~> 1.11'
28
- spec.add_development_dependency 'rake', '~> 10.0'
29
- spec.add_development_dependency 'rspec', '~> 3.0'
30
- spec.add_development_dependency 'simplecov', '~> 0.15.1'
31
- spec.add_development_dependency 'coveralls', '~> 0.8.21'
32
- spec.add_development_dependency 'rubocop', '~> 0.52.1'
31
+ spec.add_development_dependency 'rake', '>= 2.0.8'
32
+ spec.add_development_dependency 'rspec', '~> 3.9.0'
33
+ spec.add_development_dependency 'rspec-json_expectations', '~> 2.2'
34
+ spec.add_development_dependency 'simplecov', '~> 0.16.1'
35
+ spec.add_development_dependency 'simplecov-lcov', '~> 0.7.0'
36
+ spec.add_development_dependency 'vcr', '~> 5.1'
37
+ spec.add_development_dependency 'webmock', '~> 3.8', '>= 3.8.3'
38
+ spec.add_development_dependency 'rubocop', '~> 0.80.0'
39
+ spec.add_development_dependency "rubocop-performance", "~> 1.4"
40
+ spec.add_development_dependency "rubocop-rspec", "~> 1.35"
41
+ spec.add_development_dependency 'pry'
33
42
  end