correios-sro-xml 0.1.1 → 0.2.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 +7 -0
- data/CHANGELOG.rdoc +5 -0
- data/README.rdoc +7 -51
- data/correios-sro-xml.gemspec +26 -23
- data/lib/correios-sro-xml.rb +1 -3
- data/lib/correios/sro.rb +1 -12
- data/lib/correios/sro/destination.rb +1 -2
- data/lib/correios/sro/event.rb +0 -1
- data/lib/correios/sro/object.rb +0 -1
- data/lib/correios/sro/parser.rb +1 -2
- data/lib/correios/sro/timeout.rb +12 -0
- data/lib/correios/sro/tracker.rb +1 -2
- data/lib/correios/sro/version.rb +1 -3
- data/lib/correios/sro/web_service.rb +9 -43
- data/spec/correios/sro/event_spec.rb +2 -5
- data/spec/correios/sro/parser_spec.rb +44 -46
- data/spec/correios/sro/tracker_spec.rb +46 -49
- data/spec/correios/sro/web_service_spec.rb +8 -6
- data/spec/correios/sro_spec.rb +0 -1
- data/spec/fixtures/cassettes/sro_found_last.yml +57 -0
- data/spec/{support/responses/success_response_many_objects.xml → fixtures/sro_many_objects.xml} +0 -0
- data/spec/{support/responses/success_response_many_objects_international.xml → fixtures/sro_many_objects_international.xml} +0 -0
- data/spec/{support/responses/failure_response_not_found.xml → fixtures/sro_not_found.xml} +0 -0
- data/spec/{support/responses/success_response_one_object.xml → fixtures/sro_one_object.xml} +0 -0
- data/spec/spec_helper.rb +13 -5
- data/spec/support/fixture.rb +21 -0
- metadata +114 -57
- data/lib/correios/sro/string.rb +0 -10
- data/spec/support/mock_request.rb +0 -22
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 5304bbd81d83f760e5828196f54a4e7bbb5e2fd5
|
4
|
+
data.tar.gz: 0492be9b896f68b266b72c979b80ed6dff68d238
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 23cc2288024f0dd02ef64425c55b0cfcf5f0902f3befdc1b5662cb1c90e903b2c29b2d6391dfe62659d46d239db9b37138e5d90497f106f05b0ac11991712ac4
|
7
|
+
data.tar.gz: 1ffc569c2d430c092d616534a070584a71b7beb0256f049cd8a31288374286612f2524472706a32e95729c13ff91419d5d68f2600013dd7b18e87132efa839e8
|
data/CHANGELOG.rdoc
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
== Version 0.2.0
|
2
|
+
- Warning: Minimal required Ruby version from now is 1.9.3.
|
3
|
+
- Improvement: Update LogMe gem to version 0.0.6 with support to log request and response messages.
|
4
|
+
- Maintenance: Refactory all classes.
|
5
|
+
|
1
6
|
== Version 0.1.1
|
2
7
|
- Maintenance: Update .gemspec info.
|
3
8
|
|
data/README.rdoc
CHANGED
@@ -23,7 +23,7 @@ For development environment you can use follow access data:
|
|
23
23
|
|
24
24
|
require 'correios-sro-xml'
|
25
25
|
|
26
|
-
sro = Correios::SRO::Tracker.new(:
|
26
|
+
sro = Correios::SRO::Tracker.new(user: "ECT", password: "SRO")
|
27
27
|
|
28
28
|
Tracking a single object:
|
29
29
|
object = sro.get("SI047624825BR")
|
@@ -89,7 +89,7 @@ For default, the timeout for a request to SRO XML Web Service is <b>5 seconds</b
|
|
89
89
|
You can configure this timeout using <b>Correios::SRO</b> module.
|
90
90
|
|
91
91
|
Correios::SRO.configure do |config|
|
92
|
-
config.request_timeout = 3
|
92
|
+
config.request_timeout = 3 # It configures timeout to 3 seconds
|
93
93
|
end
|
94
94
|
|
95
95
|
=== Log
|
@@ -97,11 +97,11 @@ You can configure this timeout using <b>Correios::SRO</b> module.
|
|
97
97
|
For default, each request to SRO XML Web service is logged to STDOUT, with <b>:info</b> log level, using the gem {LogMe}[http://github.com/prodis/log-me].
|
98
98
|
|
99
99
|
Log example:
|
100
|
-
I, [2012-08-17T00:55:10.531780 #22692] INFO -- : Correios
|
100
|
+
I, [2012-08-17T00:55:10.531780 #22692] INFO -- : [Correios::SRO] Request:
|
101
101
|
POST http://websro.correios.com.br/sro_bin/sroii_xml.eventos
|
102
102
|
Usuario=ECT&Senha=SRO&Tipo=L&Resultado=U&Objetos=PB996681660BR
|
103
103
|
|
104
|
-
I, [2012-08-17T00:55:10.750308 #22692] INFO -- : Correios
|
104
|
+
I, [2012-08-17T00:55:10.750308 #22692] INFO -- : [Correios::SRO] Response:
|
105
105
|
HTTP/1.1 200 OK
|
106
106
|
<?xml version="1.0" encoding="iso-8859-1" ?>
|
107
107
|
<sroxml>
|
@@ -129,66 +129,22 @@ Log example:
|
|
129
129
|
</objeto>
|
130
130
|
</sroxml>
|
131
131
|
|
132
|
-
|
133
|
-
D, [2012-08-17T00:58:56.226742 #22692] DEBUG -- : Correios-SRO-XML Request:
|
134
|
-
POST http://websro.correios.com.br/sro_bin/sroii_xml.eventos
|
135
|
-
accept: */*
|
136
|
-
user-agent: Ruby
|
137
|
-
content-type: application/x-www-form-urlencoded
|
138
|
-
Usuario=ECT&Senha=SRO&Tipo=L&Resultado=U&Objetos=PB996681660BR
|
139
|
-
|
140
|
-
D, [2012-08-17T00:58:56.495131 #22692] DEBUG -- : Correios-SRO-XML Response:
|
141
|
-
HTTP/1.1 200 OK
|
142
|
-
date: Fri, 17 Aug 2012 03:58:56 GMT
|
143
|
-
server: Oracle-Application-Server-10g/10.1.2.0.2 Oracle-HTTP-Server
|
144
|
-
content-length: 855
|
145
|
-
content-type: text/html; charset=ISO-8859-1
|
146
|
-
x-cache: MISS from 127.0.0.1
|
147
|
-
connection: close
|
148
|
-
<?xml version="1.0" encoding="iso-8859-1" ?>
|
149
|
-
<sroxml>
|
150
|
-
<versao>1.0</versao>
|
151
|
-
<qtd>1</qtd>
|
152
|
-
<TipoPesquisa>Lista de Objetos</TipoPesquisa>
|
153
|
-
<TipoResultado>?ltimo evento</TipoResultado>
|
154
|
-
<objeto>
|
155
|
-
<numero>PB996681660BR</numero>
|
156
|
-
<evento>
|
157
|
-
<tipo>BDE</tipo>
|
158
|
-
<status>01</status>
|
159
|
-
<data>05/07/2012</data>
|
160
|
-
<hora>21:11</hora>
|
161
|
-
<descricao>Entregue</descricao>
|
162
|
-
<recebedor> </recebedor>
|
163
|
-
<documento> </documento>
|
164
|
-
<comentario> </comentario>
|
165
|
-
<local>CDD VILA ANDRADE</local>
|
166
|
-
<codigo>05724970</codigo>
|
167
|
-
<cidade>SAO PAULO</cidade>
|
168
|
-
<uf>SP</uf>
|
169
|
-
<sto>72824000</sto>
|
170
|
-
</evento>
|
171
|
-
</objeto>
|
172
|
-
</sroxml>
|
173
|
-
|
174
|
-
To disable the log, change log level and configure other log output, use <b>Correios::SRO</b> module:
|
132
|
+
To disable the log and configure other log output, use <b>Correios::SRO</b> module:
|
175
133
|
|
176
134
|
Correios::SRO.configure do |config|
|
177
135
|
config.log_enabled = false # It disables the log
|
178
|
-
config.log_level = :debug # It changes log level
|
179
136
|
config.logger = Rails.logger # It uses Rails logger
|
180
137
|
end
|
181
138
|
|
182
139
|
=== Configuration example
|
183
140
|
|
184
141
|
Correios::SRO.configure do |config|
|
185
|
-
config.log_level = :debug
|
186
142
|
config.logger = Rails.logger
|
187
143
|
config.request_timeout = 3
|
188
144
|
end
|
189
145
|
|
190
146
|
== Author
|
191
|
-
- {Fernando Hamasaki (prodis)}[http://prodis.blog.br]
|
147
|
+
- {Fernando Hamasaki de Amorim (prodis)}[http://prodis.blog.br]
|
192
148
|
|
193
149
|
== Collaborators
|
194
150
|
- {Thiago Ganzarolli (tganzarolli)}[https://github.com/tganzarolli]
|
@@ -213,7 +169,7 @@ To disable the log, change log level and configure other log output, use <b>Corr
|
|
213
169
|
|
214
170
|
http://prodis.net.br/images/prodis_150.gif
|
215
171
|
|
216
|
-
Copyright (c) 2012 Prodis
|
172
|
+
Copyright (c) 2012-2014 Prodis
|
217
173
|
|
218
174
|
Permission is hereby granted, free of charge, to any person obtaining
|
219
175
|
a copy of this software and associated documentation files (the
|
data/correios-sro-xml.gemspec
CHANGED
@@ -1,30 +1,33 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
lib = File.expand_path('../lib', __FILE__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
3
|
require 'correios/sro/version'
|
4
4
|
|
5
|
-
Gem::Specification.new do |
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = "correios-sro-xml"
|
7
|
+
spec.version = Correios::SRO::VERSION
|
8
|
+
spec.authors = ["Prodis a.k.a. Fernando Hamasaki de Amorim"]
|
9
|
+
spec.email = ["prodis@gmail.com"]
|
10
|
+
spec.summary = "Tracking Objects System from Correios - SRO (Sistema de Rastreamento de Objetos dos Correios)."
|
11
|
+
spec.description = "Tracking Objects System from Correios - SRO (Sistema de Rastreamento de Objetos dos Correios), using SRO XML Web Service, that allows to query up to 50 orders simultaneously."
|
12
|
+
spec.homepage = "http://prodis.blog.br/2012/08/17/correios-sro-xml-gem-para-rastreamento-de-objetos-dos-correios"
|
13
|
+
spec.licenses = ["MIT"]
|
14
14
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
15
|
+
spec.files = `git ls-files`.split($\)
|
16
|
+
spec.executables = spec.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
17
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
18
|
+
spec.require_paths = ["lib"]
|
19
19
|
|
20
|
-
|
21
|
-
|
20
|
+
spec.platform = Gem::Platform::RUBY
|
21
|
+
spec.required_ruby_version = Gem::Requirement.new(">= 1.9.3")
|
22
22
|
|
23
|
-
|
24
|
-
|
25
|
-
|
23
|
+
spec.add_dependency "log-me", "= 0.0.6"
|
24
|
+
spec.add_dependency "nokogiri", "~> 1.6"
|
25
|
+
spec.add_dependency "sax-machine", "~> 0.2.1"
|
26
26
|
|
27
|
-
|
28
|
-
|
29
|
-
|
27
|
+
spec.add_development_dependency "coveralls"
|
28
|
+
spec.add_development_dependency "pry"
|
29
|
+
spec.add_development_dependency "rake"
|
30
|
+
spec.add_development_dependency "rspec", "~> 2.14"
|
31
|
+
spec.add_development_dependency "vcr", "~> 2.8"
|
32
|
+
spec.add_development_dependency "webmock", "~> 1.15.2"
|
30
33
|
end
|
data/lib/correios-sro-xml.rb
CHANGED
@@ -1,10 +1,8 @@
|
|
1
|
-
|
2
|
-
require 'rubygems'
|
1
|
+
require 'correios/sro/timeout'
|
3
2
|
require 'correios/sro'
|
4
3
|
require 'correios/sro/destination'
|
5
4
|
require 'correios/sro/event'
|
6
5
|
require 'correios/sro/object'
|
7
6
|
require 'correios/sro/parser'
|
8
7
|
require 'correios/sro/tracker'
|
9
|
-
require 'correios/sro/string'
|
10
8
|
require 'correios/sro/web_service'
|
data/lib/correios/sro.rb
CHANGED
@@ -1,19 +1,8 @@
|
|
1
|
-
# encoding: UTF-8
|
2
1
|
require 'log-me'
|
3
2
|
|
4
3
|
module Correios
|
5
4
|
module SRO
|
6
5
|
extend LogMe
|
7
|
-
|
8
|
-
module Timeout
|
9
|
-
DEFAULT_REQUEST_TIMEOUT = 5 #seconds
|
10
|
-
attr_writer :request_timeout
|
11
|
-
|
12
|
-
def request_timeout
|
13
|
-
(@request_timeout ||= DEFAULT_REQUEST_TIMEOUT).to_i
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
extend Timeout
|
6
|
+
extend Correios::SRO::Timeout
|
18
7
|
end
|
19
8
|
end
|
@@ -1,4 +1,3 @@
|
|
1
|
-
# encoding: UTF-8
|
2
1
|
require 'sax-machine'
|
3
2
|
|
4
3
|
module Correios
|
@@ -6,7 +5,7 @@ module Correios
|
|
6
5
|
class Destination
|
7
6
|
include SAXMachine
|
8
7
|
|
9
|
-
element :local, :as => :place
|
8
|
+
element :local, :as => :place
|
10
9
|
element :codigo, :as => :code
|
11
10
|
element :cidade, :as => :city
|
12
11
|
element :bairro, :as => :neighborhood
|
data/lib/correios/sro/event.rb
CHANGED
data/lib/correios/sro/object.rb
CHANGED
data/lib/correios/sro/parser.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
# encoding: UTF-8
|
2
1
|
require 'nokogiri'
|
3
2
|
|
4
3
|
module Correios
|
@@ -6,7 +5,7 @@ module Correios
|
|
6
5
|
class Parser
|
7
6
|
def objects(xml)
|
8
7
|
objects = {}
|
9
|
-
xml
|
8
|
+
xml.encode!("UTF-8", "ISO-8859-1")
|
10
9
|
|
11
10
|
doc = Nokogiri::XML(xml)
|
12
11
|
doc.xpath("//objeto").each do |element|
|
data/lib/correios/sro/tracker.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
# encoding: UTF-8
|
2
1
|
module Correios
|
3
2
|
module SRO
|
4
3
|
class Tracker
|
@@ -6,7 +5,7 @@ module Correios
|
|
6
5
|
attr_accessor :query_type, :result_mode
|
7
6
|
attr_reader :object_numbers
|
8
7
|
|
9
|
-
DEFAULT_OPTIONS = { :
|
8
|
+
DEFAULT_OPTIONS = { query_type: :list, result_mode: :last }.freeze
|
10
9
|
|
11
10
|
def initialize(options = {})
|
12
11
|
DEFAULT_OPTIONS.merge(options).each do |attr, value|
|
data/lib/correios/sro/version.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
# encoding: UTF-8
|
2
1
|
require 'net/http'
|
3
2
|
require 'uri'
|
4
3
|
|
@@ -6,8 +5,8 @@ module Correios
|
|
6
5
|
module SRO
|
7
6
|
class WebService
|
8
7
|
URL = "http://websro.correios.com.br/sro_bin/sroii_xml.eventos"
|
9
|
-
QUERY_TYPES =
|
10
|
-
RESULT_MODES = { :
|
8
|
+
QUERY_TYPES = { list: "L", range: "F" }
|
9
|
+
RESULT_MODES = { all: "T", last: "U" }
|
11
10
|
|
12
11
|
def initialize(tracker)
|
13
12
|
@uri = URI.parse(URL)
|
@@ -18,10 +17,10 @@ module Correios
|
|
18
17
|
http = build_http
|
19
18
|
|
20
19
|
request = build_request
|
21
|
-
log_request
|
20
|
+
Correios::SRO.log_request request, @uri.to_s
|
22
21
|
|
23
22
|
response = http.request(request)
|
24
|
-
log_response
|
23
|
+
Correios::SRO.log_response response
|
25
24
|
|
26
25
|
response.body
|
27
26
|
end
|
@@ -42,46 +41,13 @@ module Correios
|
|
42
41
|
|
43
42
|
def request_params
|
44
43
|
{
|
45
|
-
:
|
46
|
-
:
|
47
|
-
:
|
48
|
-
:
|
49
|
-
:
|
44
|
+
Usuario: @tracker.user,
|
45
|
+
Senha: @tracker.password,
|
46
|
+
Tipo: QUERY_TYPES[@tracker.query_type],
|
47
|
+
Resultado: RESULT_MODES[@tracker.result_mode],
|
48
|
+
Objetos: @tracker.object_numbers.join
|
50
49
|
}
|
51
50
|
end
|
52
|
-
|
53
|
-
def log_request(request)
|
54
|
-
message = format_message(request) do
|
55
|
-
message = with_line_break { "Correios-SRO-XML Request:" }
|
56
|
-
message << with_line_break { "POST #{URL}" }
|
57
|
-
end
|
58
|
-
|
59
|
-
Correios::SRO.log(message)
|
60
|
-
end
|
61
|
-
|
62
|
-
def log_response(response)
|
63
|
-
message = format_message(response) do
|
64
|
-
message = with_line_break { "Correios-SRO-XML Response:" }
|
65
|
-
message << with_line_break { "HTTP/#{response.http_version} #{response.code} #{response.message}" }
|
66
|
-
end
|
67
|
-
|
68
|
-
Correios::SRO.log(message)
|
69
|
-
end
|
70
|
-
|
71
|
-
def format_message(http)
|
72
|
-
message = yield
|
73
|
-
message << with_line_break { format_headers_for(http) } if Correios::SRO.log_level == :debug
|
74
|
-
message << with_line_break { http.body }
|
75
|
-
end
|
76
|
-
|
77
|
-
def format_headers_for(http)
|
78
|
-
# I'm using an empty block in each_header method for Ruby 1.8.7 compatibility.
|
79
|
-
http.each_header{}.map { |name, values| "#{name}: #{values.first}" }.join("\n")
|
80
|
-
end
|
81
|
-
|
82
|
-
def with_line_break
|
83
|
-
"#{yield}\n"
|
84
|
-
end
|
85
51
|
end
|
86
52
|
end
|
87
53
|
end
|
@@ -1,14 +1,11 @@
|
|
1
|
-
# encoding: UTF-8
|
2
1
|
require 'spec_helper'
|
3
2
|
|
4
3
|
describe Correios::SRO::Event do
|
5
|
-
let(:event) { Correios::SRO::Event.new }
|
6
|
-
|
7
4
|
[:receiver, :document, :comment].each do |method|
|
8
5
|
describe "##{method}=" do
|
9
6
|
it "strips string" do
|
10
|
-
|
11
|
-
|
7
|
+
subject.send("#{method}=", " Texto. ")
|
8
|
+
expect(subject.send(method)).to eql "Texto."
|
12
9
|
end
|
13
10
|
end
|
14
11
|
end
|
@@ -1,55 +1,53 @@
|
|
1
|
-
# encoding: UTF-8
|
2
1
|
require 'spec_helper'
|
3
2
|
|
4
3
|
describe Correios::SRO::Parser do
|
5
4
|
describe "#objects" do
|
6
|
-
let(:xml) {
|
7
|
-
let(:parser) { Correios::SRO::Parser.new }
|
5
|
+
let(:xml) { Fixture.load :sro_many_objects }
|
8
6
|
|
9
7
|
it "encodes from ISO-8859-1 to UTF-8" do
|
10
|
-
xml.
|
11
|
-
|
8
|
+
expect(xml).to receive(:encode!).with("UTF-8", "ISO-8859-1")
|
9
|
+
subject.objects(xml)
|
12
10
|
end
|
13
11
|
|
14
12
|
["SI047624825BR", "SX104110463BR"].each do |number|
|
15
13
|
it "returns object number" do
|
16
|
-
objects =
|
17
|
-
objects[number].number.
|
14
|
+
objects = subject.objects(xml)
|
15
|
+
expect(objects[number].number).to eql number
|
18
16
|
end
|
19
17
|
end
|
20
18
|
|
21
19
|
context "returns event" do
|
22
|
-
before
|
20
|
+
before { @objects = subject.objects(xml) }
|
23
21
|
|
24
22
|
{ "SI047624825BR" => {
|
25
|
-
:
|
26
|
-
:
|
27
|
-
:
|
28
|
-
:
|
29
|
-
:
|
30
|
-
:
|
31
|
-
:
|
32
|
-
:
|
33
|
-
:
|
34
|
-
:
|
35
|
-
:
|
36
|
-
:
|
37
|
-
:
|
23
|
+
type: "BDI",
|
24
|
+
status: "01",
|
25
|
+
date: "26/12/2011",
|
26
|
+
hour: "15:22",
|
27
|
+
description: "Entregue",
|
28
|
+
receiver: "",
|
29
|
+
document: "",
|
30
|
+
comment: "?",
|
31
|
+
place: "AC CENTRAL DE SAO PAULO",
|
32
|
+
code: "01009972",
|
33
|
+
city: "SAO PAULO",
|
34
|
+
state: "SP",
|
35
|
+
sto: "00024419"
|
38
36
|
},
|
39
37
|
"SX104110463BR" => {
|
40
|
-
:
|
41
|
-
:
|
42
|
-
:
|
43
|
-
:
|
44
|
-
:
|
45
|
-
:
|
46
|
-
:
|
47
|
-
:
|
48
|
-
:
|
49
|
-
:
|
50
|
-
:
|
51
|
-
:
|
52
|
-
:
|
38
|
+
type: "BDE",
|
39
|
+
status: "01",
|
40
|
+
date: "08/12/2011",
|
41
|
+
hour: "09:30",
|
42
|
+
description: "Entregue",
|
43
|
+
receiver: "",
|
44
|
+
document: "",
|
45
|
+
comment: "",
|
46
|
+
place: "CEE JUNDIAI",
|
47
|
+
code: "13211970",
|
48
|
+
city: "JUNDIAI",
|
49
|
+
state: "SP",
|
50
|
+
sto: "74654209"
|
53
51
|
},
|
54
52
|
}.each do |number, first_event|
|
55
53
|
first_event.each do |attr, value|
|
@@ -62,27 +60,27 @@ describe Correios::SRO::Parser do
|
|
62
60
|
end
|
63
61
|
|
64
62
|
context "returns destination" do
|
65
|
-
before
|
63
|
+
before { @objects = subject.objects(xml) }
|
66
64
|
|
67
65
|
{ "SI047624825BR" => {
|
68
|
-
:
|
69
|
-
:
|
70
|
-
:
|
71
|
-
:
|
72
|
-
:
|
66
|
+
place: "CTE VILA MARIA",
|
67
|
+
code: "02170975",
|
68
|
+
city: "SAO PAULO",
|
69
|
+
neighborhood: "PQ NOVO MUNDO",
|
70
|
+
state: "SP"
|
73
71
|
},
|
74
72
|
"SX104110463BR" => {
|
75
|
-
:
|
76
|
-
:
|
77
|
-
:
|
78
|
-
:
|
79
|
-
:
|
73
|
+
place: "CTE CAMPINAS",
|
74
|
+
code: "13050971",
|
75
|
+
city: "VALINHOS",
|
76
|
+
neighborhood: "MACUCO",
|
77
|
+
state: "SP"
|
80
78
|
},
|
81
79
|
}.each do |number, destinations|
|
82
80
|
destinations.each do |attr, value|
|
83
81
|
it attr do
|
84
82
|
destination = @objects[number].events[3].destination
|
85
|
-
destination.send(attr).
|
83
|
+
expect(destination.send(attr)).to eql value
|
86
84
|
end
|
87
85
|
end
|
88
86
|
end
|
@@ -1,31 +1,29 @@
|
|
1
|
-
# encoding: UTF-8
|
2
1
|
require 'spec_helper'
|
3
2
|
|
4
3
|
describe Correios::SRO::Tracker do
|
5
4
|
describe ".new" do
|
6
5
|
it "creates with default values" do
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
sro.object_numbers.should == []
|
6
|
+
expect(subject.query_type).to eql :list
|
7
|
+
expect(subject.result_mode).to eql :last
|
8
|
+
expect(subject.object_numbers).to eql []
|
11
9
|
end
|
12
10
|
|
13
|
-
{ :
|
14
|
-
:
|
15
|
-
:
|
16
|
-
:
|
11
|
+
{ user: "PRODIS",
|
12
|
+
password: "pim321",
|
13
|
+
query_type: :range,
|
14
|
+
result_mode: :all
|
17
15
|
}.each do |attr, value|
|
18
16
|
context "when #{attr} is supplied" do
|
19
17
|
it "sets #{attr}" do
|
20
18
|
sro = Correios::SRO::Tracker.new(attr => value)
|
21
|
-
sro.send(attr).
|
19
|
+
expect(sro.send(attr)).to eql value
|
22
20
|
end
|
23
21
|
end
|
24
22
|
|
25
23
|
context "when #{attr} is supplied in a block" do
|
26
24
|
it "sets #{attr}" do
|
27
25
|
sro = Correios::SRO::Tracker.new { |t| t.send("#{attr}=", value) }
|
28
|
-
sro.send(attr).
|
26
|
+
expect(sro.send(attr)).to eql value
|
29
27
|
end
|
30
28
|
end
|
31
29
|
end
|
@@ -38,77 +36,76 @@ describe Correios::SRO::Tracker do
|
|
38
36
|
Correios::SRO.configure { |config| config.log_enabled = true }
|
39
37
|
end
|
40
38
|
|
41
|
-
let(:
|
39
|
+
let(:subject) { Correios::SRO::Tracker.new(user: "PRODIS", password: "pim321") }
|
40
|
+
let(:response) { "" }
|
41
|
+
before { Correios::SRO::WebService.any_instance.stub(:request!).and_return(response) }
|
42
42
|
|
43
43
|
context "to many objects" do
|
44
|
-
|
44
|
+
let(:response) { Fixture.load :sro_many_objects }
|
45
45
|
|
46
46
|
it "sets objects numbers" do
|
47
|
-
|
48
|
-
sro.object_numbers.size.should == 2
|
49
|
-
sro.object_numbers.first.should == "SI047624825BR"
|
50
|
-
sro.object_numbers.last.should == "SX104110463BR"
|
51
|
-
end
|
47
|
+
subject.get("SI047624825BR", "SX104110463BR")
|
52
48
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
sro.get("SI047624825BR", "SX104110463BR")
|
49
|
+
expect(subject.object_numbers.size).to eql 2
|
50
|
+
expect(subject.object_numbers.first).to eql "SI047624825BR"
|
51
|
+
expect(subject.object_numbers.last).to eql "SX104110463BR"
|
57
52
|
end
|
58
53
|
|
59
54
|
it "returns all objects" do
|
60
|
-
objects =
|
61
|
-
|
62
|
-
objects
|
63
|
-
|
55
|
+
objects = subject.get("SI047624825BR", "SX104110463BR")
|
56
|
+
|
57
|
+
expect(objects.size).to eql 2
|
58
|
+
|
59
|
+
expect(objects["SI047624825BR"].number).to eql "SI047624825BR"
|
60
|
+
expect(objects["SI047624825BR"].events.first.description).to eql "Entregue"
|
61
|
+
|
62
|
+
expect(objects["SX104110463BR"].number).to eql "SX104110463BR"
|
63
|
+
expect(objects["SX104110463BR"].events.first.description).to eql "Entregue"
|
64
64
|
end
|
65
65
|
|
66
66
|
context "when only one object found" do
|
67
|
-
|
67
|
+
let(:response) { Fixture.load :sro_one_object }
|
68
68
|
|
69
69
|
it "returns a Hash" do
|
70
|
-
objects =
|
71
|
-
objects.
|
70
|
+
objects = subject.get("SI047624825BR", "SX104110463BR")
|
71
|
+
expect(objects).to be_an_instance_of Hash
|
72
72
|
end
|
73
73
|
|
74
74
|
it "returns the object found" do
|
75
|
-
objects =
|
76
|
-
|
77
|
-
objects
|
75
|
+
objects = subject.get("SI047624825BR", "SX104110463BR")
|
76
|
+
|
77
|
+
expect(objects.size).to eql 1
|
78
|
+
expect(objects["SI047624825BR"].number).to eql "SI047624825BR"
|
79
|
+
expect(objects["SI047624825BR"].events.first.description).to eql "Entregue"
|
78
80
|
end
|
79
81
|
|
80
82
|
it "returns nil in object not found" do
|
81
|
-
objects =
|
82
|
-
objects["SX104110463BR"].
|
83
|
+
objects = subject.get("SI047624825BR", "SX104110463BR")
|
84
|
+
expect(objects["SX104110463BR"]).to be_nil
|
83
85
|
end
|
84
86
|
end
|
85
87
|
end
|
86
88
|
|
87
89
|
context "to one object" do
|
88
|
-
|
90
|
+
let(:response) { Fixture.load :sro_one_object }
|
89
91
|
|
90
92
|
it "sets object number" do
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
end
|
95
|
-
|
96
|
-
it "creates a WebService with correct params" do
|
97
|
-
web_service = Correios::SRO::WebService.new(sro)
|
98
|
-
Correios::SRO::WebService.should_receive(:new).with(sro).and_return(web_service)
|
99
|
-
sro.get("SI047624825BR")
|
93
|
+
subject.get("SI047624825BR")
|
94
|
+
expect(subject.object_numbers.size).to eql 1
|
95
|
+
expect(subject.object_numbers.first).to eql "SI047624825BR"
|
100
96
|
end
|
101
97
|
|
102
98
|
it "returns only one object" do
|
103
|
-
object =
|
104
|
-
object.number.
|
99
|
+
object = subject.get("SI047624825BR")
|
100
|
+
expect(object.number).to eql "SI047624825BR"
|
101
|
+
expect(object.events.first.description).to eql "Entregue"
|
105
102
|
end
|
106
103
|
|
107
104
|
context "when object not found" do
|
105
|
+
let(:response) { Fixture.load :sro_not_found }
|
106
|
+
|
108
107
|
it "returns nil" do
|
109
|
-
|
110
|
-
object = sro.get("SI047624825BR")
|
111
|
-
object.should be_nil
|
108
|
+
expect(subject.get("SI047624825BR")).to be_nil
|
112
109
|
end
|
113
110
|
end
|
114
111
|
end
|
@@ -1,4 +1,3 @@
|
|
1
|
-
# encoding: UTF-8
|
2
1
|
require 'spec_helper'
|
3
2
|
|
4
3
|
describe Correios::SRO::WebService do
|
@@ -9,12 +8,15 @@ describe Correios::SRO::WebService do
|
|
9
8
|
Correios::SRO.configure { |config| config.log_enabled = true }
|
10
9
|
end
|
11
10
|
|
12
|
-
let(:tracker)
|
13
|
-
|
11
|
+
let(:tracker) do
|
12
|
+
sro = Correios::SRO::Tracker.new(user: "ECT", password: "SRO")
|
13
|
+
sro.instance_variable_set :@object_numbers, ["SS123456789BR"]
|
14
|
+
sro
|
15
|
+
end
|
16
|
+
let(:subject) { Correios::SRO::WebService.new(tracker) }
|
14
17
|
|
15
|
-
it "returns XML response" do
|
16
|
-
|
17
|
-
web_service.request!.should eql "<xml><fake></fake>"
|
18
|
+
it "returns XML response", vcr: { cassette_name: "sro_found_last" } do
|
19
|
+
expect(subject.request!).to include("<numero>SS123456789BR</numero>")
|
18
20
|
end
|
19
21
|
end
|
20
22
|
end
|
data/spec/correios/sro_spec.rb
CHANGED
@@ -0,0 +1,57 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: http://websro.correios.com.br/sro_bin/sroii_xml.eventos
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: Usuario=ECT&Senha=SRO&Tipo=L&Resultado=U&Objetos=SS123456789BR
|
9
|
+
headers:
|
10
|
+
Accept-Encoding:
|
11
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
12
|
+
Accept:
|
13
|
+
- "*/*"
|
14
|
+
User-Agent:
|
15
|
+
- Ruby
|
16
|
+
Content-Type:
|
17
|
+
- application/x-www-form-urlencoded
|
18
|
+
response:
|
19
|
+
status:
|
20
|
+
code: 200
|
21
|
+
message: OK
|
22
|
+
headers:
|
23
|
+
Date:
|
24
|
+
- Mon, 24 Feb 2014 01:12:34 GMT
|
25
|
+
Server:
|
26
|
+
- Oracle-Application-Server-10g/10.1.2.0.2 Oracle-HTTP-Server
|
27
|
+
Content-Length:
|
28
|
+
- '850'
|
29
|
+
Content-Type:
|
30
|
+
- text/html; charset=ISO-8859-1
|
31
|
+
X-Cache:
|
32
|
+
- MISS from 127.0.0.1
|
33
|
+
body:
|
34
|
+
encoding: ASCII-8BIT
|
35
|
+
string: !binary |-
|
36
|
+
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSIgPz4K
|
37
|
+
PHNyb3htbD4KICAgPHZlcnNhbz4xLjA8L3ZlcnNhbz4KICAgPHF0ZD4xPC9x
|
38
|
+
dGQ+CiAgIDxUaXBvUGVzcXVpc2E+TGlzdGEgZGUgT2JqZXRvczwvVGlwb1Bl
|
39
|
+
c3F1aXNhPgogICA8VGlwb1Jlc3VsdGFkbz7abHRpbW8gZXZlbnRvPC9UaXBv
|
40
|
+
UmVzdWx0YWRvPgogICAgIDxvYmpldG8+CiAgICAgICA8bnVtZXJvPlNTMTIz
|
41
|
+
NDU2Nzg5QlI8L251bWVybz4KICAgICAgIDxldmVudG8+CiAgICAgICAgICA8
|
42
|
+
dGlwbz5STzwvdGlwbz4KICAgICAgICAgIDxzdGF0dXM+MDE8L3N0YXR1cz4K
|
43
|
+
ICAgICAgICAgIDxkYXRhPjE3LzA5LzIwMTM8L2RhdGE+CiAgICAgICAgICA8
|
44
|
+
aG9yYT4xMzo0ODwvaG9yYT4KICAgICAgICAgIDxkZXNjcmljYW8+RW5jYW1p
|
45
|
+
bmhhZG88L2Rlc2NyaWNhbz4KICAgICAgICAgIDxsb2NhbD5MQUJPUkFUT1JJ
|
46
|
+
TzAxLVNST0lJL0NFPC9sb2NhbD4KICAgICAgICAgIDxjb2RpZ28+NjAwMDA5
|
47
|
+
MDE8L2NvZGlnbz4KICAgICAgICAgIDxjaWRhZGU+Rk9SVEFMRVpBPC9jaWRh
|
48
|
+
ZGU+CiAgICAgICAgICA8dWY+Q0U8L3VmPgogICAgICAgICAgPHN0bz45OTk5
|
49
|
+
OTk5OTwvc3RvPgogICAgICAgPGRlc3Rpbm8+CiAgICAgICAgICA8bG9jYWw+
|
50
|
+
TEFCT1JBVE9SSU8wMi1TUk9JSS9DRTwvbG9jYWw+CiAgICAgICAgICA8Y29k
|
51
|
+
aWdvPjYwMDAwOTAyPC9jb2RpZ28+CiAgICAgICAgICA8Y2lkYWRlPkZPUlRB
|
52
|
+
TEVaQTwvY2lkYWRlPgogICAgICAgICAgPGJhaXJybz5BTERFT1RBPC9iYWly
|
53
|
+
cm8+CiAgICAgICAgICA8dWY+Q0U8L3VmPgogICAgICAgPC9kZXN0aW5vPgog
|
54
|
+
ICAgICA8L2V2ZW50bz4KICAgICA8L29iamV0bz4KPC9zcm94bWw+Cg==
|
55
|
+
http_version:
|
56
|
+
recorded_at: Mon, 24 Feb 2014 01:12:40 GMT
|
57
|
+
recorded_with: VCR 2.8.0
|
data/spec/{support/responses/success_response_many_objects.xml → fixtures/sro_many_objects.xml}
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/spec/spec_helper.rb
CHANGED
@@ -1,13 +1,21 @@
|
|
1
1
|
require 'correios-sro-xml'
|
2
|
-
require '
|
2
|
+
require 'coveralls'
|
3
|
+
require 'vcr'
|
4
|
+
require 'support/fixture'
|
3
5
|
|
4
|
-
|
5
|
-
# in ./support/ and its subdirectories.
|
6
|
-
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
6
|
+
Coveralls.wear!
|
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
13
|
config.order = "random"
|
11
14
|
end
|
12
15
|
|
13
|
-
|
16
|
+
VCR.configure do |config|
|
17
|
+
config.default_cassette_options = { :match_requests_on => [:uri, :method, :body] }
|
18
|
+
config.cassette_library_dir = 'spec/fixtures/cassettes'
|
19
|
+
config.hook_into :webmock
|
20
|
+
config.configure_rspec_metadata!
|
21
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
class Fixture
|
2
|
+
class << self
|
3
|
+
def load(name)
|
4
|
+
case name
|
5
|
+
when :sro_one_object,
|
6
|
+
:sro_many_objects,
|
7
|
+
:sro_many_objects_international,
|
8
|
+
:sro_not_found
|
9
|
+
read_file_for name
|
10
|
+
else
|
11
|
+
raise ArgumentError, "Fixture '#{name}' not found."
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def read_file_for(filename)
|
18
|
+
File.open("#{File.expand_path("../../", __FILE__)}/fixtures/#{filename}.xml").read
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
metadata
CHANGED
@@ -1,82 +1,141 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: correios-sro-xml
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.2.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
|
-
- Prodis a.k.a. Fernando Hamasaki
|
7
|
+
- Prodis a.k.a. Fernando Hamasaki de Amorim
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-02-25 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: log-me
|
16
|
-
requirement:
|
17
|
-
none: false
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '='
|
20
18
|
- !ruby/object:Gem::Version
|
21
|
-
version: 0.0.
|
19
|
+
version: 0.0.6
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
|
-
version_requirements:
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.0.6
|
25
27
|
- !ruby/object:Gem::Dependency
|
26
28
|
name: nokogiri
|
27
|
-
requirement:
|
28
|
-
none: false
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
29
30
|
requirements:
|
30
|
-
- - ~>
|
31
|
+
- - "~>"
|
31
32
|
- !ruby/object:Gem::Version
|
32
|
-
version: '1.
|
33
|
+
version: '1.6'
|
33
34
|
type: :runtime
|
34
35
|
prerelease: false
|
35
|
-
version_requirements:
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.6'
|
36
41
|
- !ruby/object:Gem::Dependency
|
37
42
|
name: sax-machine
|
38
|
-
requirement:
|
39
|
-
none: false
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
40
44
|
requirements:
|
41
|
-
- - ~>
|
45
|
+
- - "~>"
|
42
46
|
- !ruby/object:Gem::Version
|
43
|
-
version:
|
47
|
+
version: 0.2.1
|
44
48
|
type: :runtime
|
45
49
|
prerelease: false
|
46
|
-
version_requirements:
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.2.1
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: coveralls
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: pry
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
47
83
|
- !ruby/object:Gem::Dependency
|
48
84
|
name: rake
|
49
|
-
requirement:
|
50
|
-
none: false
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
51
86
|
requirements:
|
52
|
-
- -
|
87
|
+
- - ">="
|
53
88
|
- !ruby/object:Gem::Version
|
54
89
|
version: '0'
|
55
90
|
type: :development
|
56
91
|
prerelease: false
|
57
|
-
version_requirements:
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
58
97
|
- !ruby/object:Gem::Dependency
|
59
98
|
name: rspec
|
60
|
-
requirement:
|
61
|
-
none: false
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
62
100
|
requirements:
|
63
|
-
- - ~>
|
101
|
+
- - "~>"
|
64
102
|
- !ruby/object:Gem::Version
|
65
|
-
version: '2.
|
103
|
+
version: '2.14'
|
66
104
|
type: :development
|
67
105
|
prerelease: false
|
68
|
-
version_requirements:
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '2.14'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: vcr
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '2.8'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '2.8'
|
69
125
|
- !ruby/object:Gem::Dependency
|
70
126
|
name: webmock
|
71
|
-
requirement:
|
72
|
-
none: false
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
73
128
|
requirements:
|
74
|
-
- - ~>
|
129
|
+
- - "~>"
|
75
130
|
- !ruby/object:Gem::Version
|
76
|
-
version:
|
131
|
+
version: 1.15.2
|
77
132
|
type: :development
|
78
133
|
prerelease: false
|
79
|
-
version_requirements:
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: 1.15.2
|
80
139
|
description: Tracking Objects System from Correios - SRO (Sistema de Rastreamento
|
81
140
|
de Objetos dos Correios), using SRO XML Web Service, that allows to query up to
|
82
141
|
50 orders simultaneously.
|
@@ -86,8 +145,8 @@ executables: []
|
|
86
145
|
extensions: []
|
87
146
|
extra_rdoc_files: []
|
88
147
|
files:
|
89
|
-
- .gitignore
|
90
|
-
- .rspec
|
148
|
+
- ".gitignore"
|
149
|
+
- ".rspec"
|
91
150
|
- CHANGELOG.rdoc
|
92
151
|
- Gemfile
|
93
152
|
- README.rdoc
|
@@ -99,7 +158,7 @@ files:
|
|
99
158
|
- lib/correios/sro/event.rb
|
100
159
|
- lib/correios/sro/object.rb
|
101
160
|
- lib/correios/sro/parser.rb
|
102
|
-
- lib/correios/sro/
|
161
|
+
- lib/correios/sro/timeout.rb
|
103
162
|
- lib/correios/sro/tracker.rb
|
104
163
|
- lib/correios/sro/version.rb
|
105
164
|
- lib/correios/sro/web_service.rb
|
@@ -109,39 +168,36 @@ files:
|
|
109
168
|
- spec/correios/sro/tracker_spec.rb
|
110
169
|
- spec/correios/sro/web_service_spec.rb
|
111
170
|
- spec/correios/sro_spec.rb
|
171
|
+
- spec/fixtures/cassettes/sro_found_last.yml
|
172
|
+
- spec/fixtures/sro_many_objects.xml
|
173
|
+
- spec/fixtures/sro_many_objects_international.xml
|
174
|
+
- spec/fixtures/sro_not_found.xml
|
175
|
+
- spec/fixtures/sro_one_object.xml
|
112
176
|
- spec/spec_helper.rb
|
113
|
-
- spec/support/
|
114
|
-
|
115
|
-
- spec/support/responses/success_response_many_objects.xml
|
116
|
-
- spec/support/responses/success_response_many_objects_international.xml
|
117
|
-
- spec/support/responses/success_response_one_object.xml
|
118
|
-
homepage: http://github.com/prodis/correios-sro-xml
|
177
|
+
- spec/support/fixture.rb
|
178
|
+
homepage: http://prodis.blog.br/2012/08/17/correios-sro-xml-gem-para-rastreamento-de-objetos-dos-correios
|
119
179
|
licenses:
|
120
180
|
- MIT
|
181
|
+
metadata: {}
|
121
182
|
post_install_message:
|
122
183
|
rdoc_options: []
|
123
184
|
require_paths:
|
124
185
|
- lib
|
125
186
|
required_ruby_version: !ruby/object:Gem::Requirement
|
126
|
-
none: false
|
127
187
|
requirements:
|
128
|
-
- -
|
188
|
+
- - ">="
|
129
189
|
- !ruby/object:Gem::Version
|
130
|
-
version: 1.
|
190
|
+
version: 1.9.3
|
131
191
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
132
|
-
none: false
|
133
192
|
requirements:
|
134
|
-
- -
|
193
|
+
- - ">="
|
135
194
|
- !ruby/object:Gem::Version
|
136
195
|
version: '0'
|
137
|
-
segments:
|
138
|
-
- 0
|
139
|
-
hash: -695408557
|
140
196
|
requirements: []
|
141
197
|
rubyforge_project:
|
142
|
-
rubygems_version:
|
198
|
+
rubygems_version: 2.2.2
|
143
199
|
signing_key:
|
144
|
-
specification_version:
|
200
|
+
specification_version: 4
|
145
201
|
summary: Tracking Objects System from Correios - SRO (Sistema de Rastreamento de Objetos
|
146
202
|
dos Correios).
|
147
203
|
test_files:
|
@@ -150,9 +206,10 @@ test_files:
|
|
150
206
|
- spec/correios/sro/tracker_spec.rb
|
151
207
|
- spec/correios/sro/web_service_spec.rb
|
152
208
|
- spec/correios/sro_spec.rb
|
209
|
+
- spec/fixtures/cassettes/sro_found_last.yml
|
210
|
+
- spec/fixtures/sro_many_objects.xml
|
211
|
+
- spec/fixtures/sro_many_objects_international.xml
|
212
|
+
- spec/fixtures/sro_not_found.xml
|
213
|
+
- spec/fixtures/sro_one_object.xml
|
153
214
|
- spec/spec_helper.rb
|
154
|
-
- spec/support/
|
155
|
-
- spec/support/responses/failure_response_not_found.xml
|
156
|
-
- spec/support/responses/success_response_many_objects.xml
|
157
|
-
- spec/support/responses/success_response_many_objects_international.xml
|
158
|
-
- spec/support/responses/success_response_one_object.xml
|
215
|
+
- spec/support/fixture.rb
|
data/lib/correios/sro/string.rb
DELETED
@@ -1,22 +0,0 @@
|
|
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
|