correios-sro-xml 0.0.4 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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