correios-sro-xml 0.0.4 → 0.1.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 (36) hide show
  1. data/.gitignore +25 -0
  2. data/CHANGELOG.rdoc +14 -8
  3. data/Gemfile +1 -12
  4. data/README.rdoc +181 -35
  5. data/Rakefile +13 -35
  6. data/correios-sro-xml.gemspec +24 -80
  7. data/lib/correios-sro-xml.rb +4 -4
  8. data/lib/correios/sro.rb +11 -0
  9. data/lib/correios/sro/destination.rb +16 -0
  10. data/lib/correios/sro/event.rb +31 -0
  11. data/lib/correios/sro/object.rb +13 -0
  12. data/lib/correios/sro/parser.rb +5 -5
  13. data/lib/correios/sro/tracker.rb +43 -0
  14. data/lib/correios/sro/version.rb +1 -6
  15. data/lib/correios/sro/web_service.rb +64 -11
  16. data/misc/correios_sro_xml_manual_v1.5.pdf +0 -0
  17. data/spec/correios/sro/event_spec.rb +15 -0
  18. data/spec/correios/sro/parser_spec.rb +44 -44
  19. data/spec/correios/sro/tracker_spec.rb +116 -0
  20. data/spec/correios/sro/web_service_spec.rb +10 -4
  21. data/spec/correios/sro_spec.rb +22 -0
  22. data/spec/spec_helper.rb +3 -5
  23. data/spec/support/mock_request.rb +22 -0
  24. data/spec/support/responses/failure_response_not_found.xml +6 -0
  25. data/spec/support/responses/{success-response-many-objects.xml → success_response_many_objects.xml} +0 -0
  26. data/spec/support/responses/{success-response-many-objects-international.xml → success_response_many_objects_international.xml} +0 -0
  27. data/spec/support/responses/{success-response-one-object.xml → success_response_one_object.xml} +0 -0
  28. metadata +54 -59
  29. data/Gemfile.lock +0 -62
  30. data/lib/correios/sro/destino.rb +0 -16
  31. data/lib/correios/sro/evento.rb +0 -31
  32. data/lib/correios/sro/objeto.rb +0 -13
  33. data/lib/correios/sro/rastreador.rb +0 -43
  34. data/spec/correios/sro/evento_spec.rb +0 -15
  35. data/spec/correios/sro/rastreador_spec.rb +0 -53
  36. data/spec/support/fake_request.rb +0 -21
@@ -3,12 +3,18 @@ require 'spec_helper'
3
3
 
4
4
  describe Correios::SRO::WebService do
5
5
  describe "#request" do
6
- let(:sro) { Correios::SRO::Rastreador.new }
7
- let(:web_service) { Correios::SRO::WebService.new }
6
+ around do |example|
7
+ Correios::SRO.configure { |config| config.log_enabled = false }
8
+ example.run
9
+ Correios::SRO.configure { |config| config.log_enabled = true }
10
+ end
11
+
12
+ let(:tracker) { Correios::SRO::Tracker.new }
13
+ let(:web_service) { Correios::SRO::WebService.new(tracker) }
8
14
 
9
15
  it "returns XML response" do
10
- fake_request_for("<xml><fake></fake>")
11
- web_service.request(sro).should == "<xml><fake></fake>"
16
+ mock_request_for("<xml><fake></fake>")
17
+ web_service.request!.should eql "<xml><fake></fake>"
12
18
  end
13
19
  end
14
20
  end
@@ -0,0 +1,22 @@
1
+ # encoding: UTF-8
2
+ require 'spec_helper'
3
+
4
+ describe Correios::SRO do
5
+ describe "#request_timeout" do
6
+ it "default is 5" do
7
+ Correios::SRO.request_timeout.should eql 5
8
+ end
9
+
10
+ context "when set timeout" do
11
+ it "returns timeout" do
12
+ Correios::SRO.configure { |config| config.request_timeout = 3 }
13
+ Correios::SRO.request_timeout.should eql 3
14
+ end
15
+
16
+ it "returns timeout in seconds (integer)" do
17
+ Correios::SRO.configure { |config| config.request_timeout = 2.123 }
18
+ Correios::SRO.request_timeout.should eql 2
19
+ end
20
+ end
21
+ end
22
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  require 'correios-sro-xml'
2
- require 'fakeweb'
2
+ require 'webmock/rspec'
3
3
 
4
4
  # Requires supporting files with custom matchers and macros, etc,
5
5
  # in ./support/ and its subdirectories.
@@ -7,9 +7,7 @@ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
7
7
 
8
8
  # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
9
9
  RSpec.configure do |config|
10
- config.treat_symbols_as_metadata_keys_with_true_values = true
11
- config.run_all_when_everything_filtered = true
12
- config.filter_run :focus
10
+ config.order = "random"
13
11
  end
14
12
 
15
- FakeWeb.allow_net_connect = false
13
+ WebMock.disable_net_connect!
@@ -0,0 +1,22 @@
1
+ # encoding: UTF-8
2
+
3
+ def mock_request_for(response)
4
+ url = Regexp.new("http://websro.correios.com.br/sro_bin/sroii_xml.eventos")
5
+ WebMock::API.stub_request(:post, url).to_return(:status => 200, :body => body_for(response))
6
+ end
7
+
8
+ def body_for(response)
9
+ case response
10
+ when :success_response_one_object,
11
+ :success_response_many_objects,
12
+ :success_response_many_objects_international,
13
+ :failure_response_not_found
14
+ read_file_for(response)
15
+ else
16
+ response
17
+ end
18
+ end
19
+
20
+ def read_file_for(filename)
21
+ File.open("#{File.dirname(__FILE__)}/responses/#{filename}.xml").read
22
+ end
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="iso-8859-1" ?>
2
+ <sroxml>
3
+ <versao>1.0</versao>
4
+ <error>Objetos não encontrados</error>
5
+ </sroxml>
6
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: correios-sro-xml
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,22 +9,22 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-18 00:00:00.000000000 Z
12
+ date: 2012-08-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: log-me
16
- requirement: &11301360 !ruby/object:Gem::Requirement
16
+ requirement: &14781180 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: 0.0.2
21
+ version: 0.0.4
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *11301360
24
+ version_requirements: *14781180
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: nokogiri
27
- requirement: &11300280 !ruby/object:Gem::Requirement
27
+ requirement: &14780950 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '1.5'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *11300280
35
+ version_requirements: *14780950
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: sax-machine
38
- requirement: &11299360 !ruby/object:Gem::Requirement
38
+ requirement: &14780720 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,96 +43,77 @@ dependencies:
43
43
  version: '0.1'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *11299360
46
+ version_requirements: *14780720
47
47
  - !ruby/object:Gem::Dependency
48
- name: fakeweb
49
- requirement: &11298680 !ruby/object:Gem::Requirement
48
+ name: rake
49
+ requirement: &14780530 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
- - - ~>
53
- - !ruby/object:Gem::Version
54
- version: '1.3'
55
- type: :development
56
- prerelease: false
57
- version_requirements: *11298680
58
- - !ruby/object:Gem::Dependency
59
- name: jeweler
60
- requirement: &11297320 !ruby/object:Gem::Requirement
61
- none: false
62
- requirements:
63
- - - ~>
52
+ - - ! '>='
64
53
  - !ruby/object:Gem::Version
65
- version: '1.8'
54
+ version: '0'
66
55
  type: :development
67
56
  prerelease: false
68
- version_requirements: *11297320
57
+ version_requirements: *14780530
69
58
  - !ruby/object:Gem::Dependency
70
59
  name: rspec
71
- requirement: &11296780 !ruby/object:Gem::Requirement
60
+ requirement: &14780260 !ruby/object:Gem::Requirement
72
61
  none: false
73
62
  requirements:
74
63
  - - ~>
75
64
  - !ruby/object:Gem::Version
76
- version: '2.9'
65
+ version: '2.11'
77
66
  type: :development
78
67
  prerelease: false
79
- version_requirements: *11296780
68
+ version_requirements: *14780260
80
69
  - !ruby/object:Gem::Dependency
81
- name: ruby-debug
82
- requirement: &11312530 !ruby/object:Gem::Requirement
70
+ name: webmock
71
+ requirement: &14780010 !ruby/object:Gem::Requirement
83
72
  none: false
84
73
  requirements:
85
- - - ! '>='
86
- - !ruby/object:Gem::Version
87
- version: '0'
88
- type: :development
89
- prerelease: false
90
- version_requirements: *11312530
91
- - !ruby/object:Gem::Dependency
92
- name: ruby-debug19
93
- requirement: &11311710 !ruby/object:Gem::Requirement
94
- none: false
95
- requirements:
96
- - - ! '>='
74
+ - - ~>
97
75
  - !ruby/object:Gem::Version
98
- version: '0'
76
+ version: '1.8'
99
77
  type: :development
100
78
  prerelease: false
101
- version_requirements: *11311710
79
+ version_requirements: *14780010
102
80
  description: Sistema de Rastreamento de Objetos dos Correios (SRO) utilizando o Web
103
81
  Service SRO XML, que permite a consulta de ate 50 encomendas simultaneamente.
104
- email: prodis@gmail.com
82
+ email:
83
+ - prodis@gmail.com
105
84
  executables: []
106
85
  extensions: []
107
- extra_rdoc_files:
108
- - README.rdoc
86
+ extra_rdoc_files: []
109
87
  files:
88
+ - .gitignore
110
89
  - .rspec
111
90
  - CHANGELOG.rdoc
112
91
  - Gemfile
113
- - Gemfile.lock
114
92
  - README.rdoc
115
93
  - Rakefile
116
94
  - correios-sro-xml.gemspec
117
95
  - lib/correios-sro-xml.rb
118
96
  - lib/correios/sro.rb
119
- - lib/correios/sro/destino.rb
120
- - lib/correios/sro/evento.rb
121
- - lib/correios/sro/objeto.rb
97
+ - lib/correios/sro/destination.rb
98
+ - lib/correios/sro/event.rb
99
+ - lib/correios/sro/object.rb
122
100
  - lib/correios/sro/parser.rb
123
- - lib/correios/sro/rastreador.rb
124
101
  - lib/correios/sro/string.rb
102
+ - lib/correios/sro/tracker.rb
125
103
  - lib/correios/sro/version.rb
126
104
  - lib/correios/sro/web_service.rb
127
- - spec/correios/sro/evento_spec.rb
105
+ - misc/correios_sro_xml_manual_v1.5.pdf
106
+ - spec/correios/sro/event_spec.rb
128
107
  - spec/correios/sro/parser_spec.rb
129
- - spec/correios/sro/rastreador_spec.rb
108
+ - spec/correios/sro/tracker_spec.rb
130
109
  - spec/correios/sro/web_service_spec.rb
110
+ - spec/correios/sro_spec.rb
131
111
  - spec/spec_helper.rb
132
- - spec/support/fake_request.rb
133
- - spec/support/responses/success-response-many-objects-international.xml
134
- - spec/support/responses/success-response-many-objects.xml
135
- - spec/support/responses/success-response-one-object.xml
112
+ - spec/support/mock_request.rb
113
+ - spec/support/responses/failure_response_not_found.xml
114
+ - spec/support/responses/success_response_many_objects.xml
115
+ - spec/support/responses/success_response_many_objects_international.xml
116
+ - spec/support/responses/success_response_one_object.xml
136
117
  homepage: http://github.com/prodis/correios-sro-xml
137
118
  licenses:
138
119
  - MIT
@@ -152,10 +133,24 @@ required_rubygems_version: !ruby/object:Gem::Requirement
152
133
  - - ! '>='
153
134
  - !ruby/object:Gem::Version
154
135
  version: '0'
136
+ segments:
137
+ - 0
138
+ hash: 889618543
155
139
  requirements: []
156
140
  rubyforge_project:
157
141
  rubygems_version: 1.8.16
158
142
  signing_key:
159
143
  specification_version: 3
160
144
  summary: Sistema de Rastreamento de Objetos dos Correios (SRO).
161
- test_files: []
145
+ test_files:
146
+ - spec/correios/sro/event_spec.rb
147
+ - spec/correios/sro/parser_spec.rb
148
+ - spec/correios/sro/tracker_spec.rb
149
+ - spec/correios/sro/web_service_spec.rb
150
+ - spec/correios/sro_spec.rb
151
+ - spec/spec_helper.rb
152
+ - spec/support/mock_request.rb
153
+ - spec/support/responses/failure_response_not_found.xml
154
+ - spec/support/responses/success_response_many_objects.xml
155
+ - spec/support/responses/success_response_many_objects_international.xml
156
+ - spec/support/responses/success_response_one_object.xml
data/Gemfile.lock DELETED
@@ -1,62 +0,0 @@
1
- GEM
2
- remote: http://rubygems.org/
3
- specs:
4
- archive-tar-minitar (0.5.2)
5
- columnize (0.3.6)
6
- diff-lcs (1.1.3)
7
- fakeweb (1.3.0)
8
- git (1.2.5)
9
- jeweler (1.8.3)
10
- bundler (~> 1.0)
11
- git (>= 1.2.5)
12
- rake
13
- rdoc
14
- json (1.6.6)
15
- linecache (0.46)
16
- rbx-require-relative (> 0.0.4)
17
- linecache19 (0.5.12)
18
- ruby_core_source (>= 0.1.4)
19
- log-me (0.0.2)
20
- nokogiri (1.5.2)
21
- rake (0.9.2.2)
22
- rbx-require-relative (0.0.9)
23
- rdoc (3.12)
24
- json (~> 1.4)
25
- rspec (2.9.0)
26
- rspec-core (~> 2.9.0)
27
- rspec-expectations (~> 2.9.0)
28
- rspec-mocks (~> 2.9.0)
29
- rspec-core (2.9.0)
30
- rspec-expectations (2.9.1)
31
- diff-lcs (~> 1.1.3)
32
- rspec-mocks (2.9.0)
33
- ruby-debug (0.10.4)
34
- columnize (>= 0.1)
35
- ruby-debug-base (~> 0.10.4.0)
36
- ruby-debug-base (0.10.4)
37
- linecache (>= 0.3)
38
- ruby-debug-base19 (0.11.25)
39
- columnize (>= 0.3.1)
40
- linecache19 (>= 0.5.11)
41
- ruby_core_source (>= 0.1.4)
42
- ruby-debug19 (0.11.6)
43
- columnize (>= 0.3.1)
44
- linecache19 (>= 0.5.11)
45
- ruby-debug-base19 (>= 0.11.19)
46
- ruby_core_source (0.1.5)
47
- archive-tar-minitar (>= 0.5.2)
48
- sax-machine (0.1.0)
49
- nokogiri (> 0.0.0)
50
-
51
- PLATFORMS
52
- ruby
53
-
54
- DEPENDENCIES
55
- fakeweb (~> 1.3)
56
- jeweler (~> 1.8)
57
- log-me (~> 0.0.2)
58
- nokogiri (~> 1.5)
59
- rspec (~> 2.9)
60
- ruby-debug
61
- ruby-debug19
62
- sax-machine (~> 0.1)
@@ -1,16 +0,0 @@
1
- # encoding: UTF-8
2
- require 'sax-machine'
3
-
4
- module Correios
5
- module SRO
6
- class Destino
7
- include SAXMachine
8
-
9
- element :local
10
- element :codigo
11
- element :cidade
12
- element :bairro
13
- element :uf
14
- end
15
- end
16
- end
@@ -1,31 +0,0 @@
1
- # encoding: UTF-8
2
- require 'sax-machine'
3
-
4
- module Correios
5
- module SRO
6
- class Evento
7
- include SAXMachine
8
-
9
- element :tipo
10
- element :status
11
- element :data
12
- element :hora
13
- element :descricao
14
- element :recebedor
15
- element :documento
16
- element :comentario
17
- element :local
18
- element :codigo
19
- element :cidade
20
- element :uf
21
- element :sto
22
- element :destino, :class => Correios::SRO::Destino
23
-
24
- [:recebedor, :documento, :comentario].each do |method|
25
- define_method "#{method}=" do |value|
26
- instance_variable_set("@#{method}", value.to_s.strip)
27
- end
28
- end
29
- end
30
- end
31
- end
@@ -1,13 +0,0 @@
1
- # encoding: UTF-8
2
- require 'sax-machine'
3
-
4
- module Correios
5
- module SRO
6
- class Objeto
7
- include SAXMachine
8
-
9
- element :numero
10
- elements :evento, :as => :eventos, :class => Correios::SRO::Evento
11
- end
12
- end
13
- end
@@ -1,43 +0,0 @@
1
- # encoding: UTF-8
2
- module Correios
3
- module SRO
4
- class Rastreador
5
- attr_accessor :usuario, :senha
6
- attr_accessor :tipo, :resultado
7
- attr_reader :objetos
8
-
9
- DEFAULT_OPTIONS = { :tipo => :lista, :resultado => :ultimo }
10
-
11
- def initialize(options = {})
12
- DEFAULT_OPTIONS.merge(options).each do |attr, value|
13
- self.send("#{attr}=", value)
14
- end
15
-
16
- yield self if block_given?
17
- @objetos = []
18
- end
19
-
20
- def consultar(*object_numbers)
21
- @objetos = object_numbers
22
- response = web_service.request(self)
23
- objects = parser.objetos(response)
24
-
25
- if objects.size == 1
26
- objects.values.first
27
- else
28
- objects
29
- end
30
- end
31
-
32
- private
33
-
34
- def web_service
35
- @web_service ||= Correios::SRO::WebService.new
36
- end
37
-
38
- def parser
39
- @parser ||= Correios::SRO::Parser.new
40
- end
41
- end
42
- end
43
- end