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.
- checksums.yaml +5 -5
- data/.github/workflows/ruby.yml +31 -0
- data/.gitignore +4 -3
- data/README.md +1 -2
- data/lib/sigep_web.rb +9 -9
- data/lib/sigep_web/calculate_digit_checker.rb +21 -18
- data/lib/sigep_web/generate_labels_digit_verifier.rb +20 -19
- data/lib/sigep_web/models/additional_service.rb +14 -0
- data/lib/sigep_web/models/dimension_object.rb +18 -0
- data/lib/sigep_web/models/postal_object.rb +27 -0
- data/lib/sigep_web/{Models → models}/receiver.rb +3 -0
- data/lib/sigep_web/{Models → models}/sender.rb +3 -0
- data/lib/sigep_web/postage_card_status.rb +15 -18
- data/lib/sigep_web/request_labels.rb +43 -43
- data/lib/sigep_web/request_plp_services.rb +25 -25
- data/lib/sigep_web/request_range.rb +28 -24
- data/lib/sigep_web/request_xml_plp.rb +18 -19
- data/lib/sigep_web/search_client.rb +20 -20
- data/lib/sigep_web/service_availability.rb +26 -25
- data/lib/sigep_web/version.rb +3 -1
- data/lib/sigep_web/web_service_interface_api.rb +4 -5
- data/lib/sigep_web/web_service_reverse_logistic_api.rb +5 -3
- data/lib/sigep_web/xml/additional_service.rb +27 -0
- data/lib/sigep_web/{XML → xml}/dimension_object.rb +3 -0
- data/lib/sigep_web/xml/postal_object.rb +54 -0
- data/lib/sigep_web/{XML → xml}/receiver.rb +3 -0
- data/lib/sigep_web/zip_query.rb +15 -16
- data/sigep_web.gemspec +19 -10
- metadata +130 -69
- data/.codeclimate.yml +0 -28
- data/.travis.yml +0 -4
- data/Gemfile.lock +0 -98
- data/lib/sigep_web/Models/additional_service.rb +0 -12
- data/lib/sigep_web/Models/dimension_object.rb +0 -15
- data/lib/sigep_web/Models/postal_object.rb +0 -21
- data/lib/sigep_web/XML/additional_service.rb +0 -24
- 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(
|
4
|
-
@type =
|
5
|
-
@service =
|
6
|
-
@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
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
{
|
25
|
-
|
26
|
-
|
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(
|
4
|
-
@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
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
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(
|
4
|
-
@id_contract
|
5
|
-
@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
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
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(
|
4
|
-
@service_number =
|
5
|
-
@source_zip =
|
6
|
-
@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
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
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
|
+
|
data/lib/sigep_web/version.rb
CHANGED
@@ -1,10 +1,9 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SigepWeb
|
2
4
|
class WebServiceInterfaceApi
|
3
|
-
def initialize
|
4
|
-
@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:
|
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
|
+
|
@@ -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
|
+
|
data/lib/sigep_web/zip_query.rb
CHANGED
@@ -1,26 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SigepWeb
|
2
4
|
class ZipQuery < WebServiceInterfaceApi
|
3
|
-
def initialize(
|
4
|
-
@zip =
|
5
|
+
def initialize(zip:)
|
6
|
+
@zip = zip
|
7
|
+
|
5
8
|
super()
|
6
9
|
end
|
7
10
|
|
8
11
|
def request
|
9
|
-
|
10
|
-
|
11
|
-
|
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
|
-
|
16
|
-
|
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.
|
25
|
-
|
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 '
|
28
|
-
spec.add_development_dependency '
|
29
|
-
spec.add_development_dependency 'rspec', '~>
|
30
|
-
spec.add_development_dependency 'simplecov', '~> 0.
|
31
|
-
spec.add_development_dependency '
|
32
|
-
spec.add_development_dependency '
|
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
|