correios-sro-xml 0.3.1 → 0.4.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 CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- Y2JmMGZiNTEwNDNkZDgwODhmMjhlY2QzNGE5YmFkNjVjOTg2YjU1NQ==
5
- data.tar.gz: !binary |-
6
- OTczMTMwMmNmNTlkOTc5OTc4NmJkNDM0Y2NjYTQ5MTEyMzFlZDI2YQ==
2
+ SHA1:
3
+ metadata.gz: 8b4c3bd92172a23de831757bd0baa3c424c739b5
4
+ data.tar.gz: 3465ad05393df1da106d1298c5e574ee65bcb24d
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- ZTQ3NTQ5NjE4OTdjYjIzYWE0M2IwNWQxZDZiMjQwYmJhYTI4NjQ0YzcwYTBh
10
- ZjkwMjE1ZTg1ZWIyY2MwMWUzZGVkZWU2NWJlNjg3NmQyNjc1Y2FiMGE5MjY0
11
- ZTBmOWQxOGE1NGU3N2RhMWMxMWE0ZWM4ZjJhZTVmZDU3NDgxOGQ=
12
- data.tar.gz: !binary |-
13
- NmNiNzhjMTYzOTVkYTE0ZjRiZDE5MWEzNjk5ZGUzZDIwM2U5NThjNzFmMDgy
14
- ZDdhMzcxNzNkMjM5NDA0ZmUwNDkzODg5ZjgyOTM2ZWU1NjBkN2RhODEwNmI2
15
- N2E3ODcwYzYzMzI1MGU5YjdiMWZiYjEyMGEwNjljMzNkOWJhZTA=
6
+ metadata.gz: d54c42ad7a14b7234206400cf71afa834b4d5b95ef40771d3f35d5b2345bdcae84ad1560bb1376dd027b906024746a4370a3147e8049acc65a64d7530365d356
7
+ data.tar.gz: ba68368e66770f980916f5e07c0e4663b96c9059843a7be983d2fd84df79d5d09f45360be8c1abdc1d5ade86f2aee86fbc6c3f1cfbcb6122519710e1da3d073b
@@ -1,7 +1,12 @@
1
1
  language: ruby
2
+
3
+ before_install:
4
+ - gem install bundler
5
+
2
6
  rvm:
3
7
  - 1.9.3
4
8
  - 2.0.0
5
9
  - 2.1.5
6
10
  - 2.2.3
11
+
7
12
  script: bundle exec rspec
@@ -1,3 +1,6 @@
1
+ == Version 0.4.0
2
+ - Fix: {Using new Correios endpoint #5}[https://github.com/prodis/correios-sro-xml/pull/5]
3
+
1
4
  == Version 0.3.1
2
5
  - Improvement: Update LogMe gem to version 0.0.10.
3
6
 
@@ -163,6 +163,7 @@ You can disable the log and configure other log output.
163
163
  - {Fernando Hamasaki de Amorim (prodis)}[http://prodis.blog.br]
164
164
 
165
165
  == Collaborators
166
+ - {Lennon Manchester (lemanchester)}[https://github.com/lemanchester]
166
167
  - {Thiago Ganzarolli (tganzarolli)}[https://github.com/tganzarolli]
167
168
 
168
169
  == Contributing to correios-sro-xml
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require 'correios-sro-xml'
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start
@@ -7,3 +7,4 @@ require 'correios/sro/object'
7
7
  require 'correios/sro/parser'
8
8
  require 'correios/sro/tracker'
9
9
  require 'correios/sro/web_service'
10
+ require 'correios/sro/request_builder'
@@ -6,7 +6,13 @@ module Correios
6
6
  include SAXMachine
7
7
 
8
8
  element :numero, :as => :number
9
+ element :erro, :as => :error
9
10
  elements :evento, :as => :events, :class => Correios::SRO::Event
11
+
12
+ def has_error?
13
+ error != nil
14
+ end
15
+
10
16
  end
11
17
  end
12
18
  end
@@ -5,11 +5,10 @@ module Correios
5
5
  class Parser
6
6
  def objects(xml)
7
7
  objects = {}
8
- xml.encode!("UTF-8", "ISO-8859-1")
9
8
 
10
- doc = Nokogiri::XML(xml)
11
- doc.xpath("//objeto").each do |element|
9
+ Nokogiri::XML(xml).xpath("//objeto").each do |element|
12
10
  object = Correios::SRO::Object.parse(element.to_xml)
11
+ return objects if object.has_error?
13
12
  objects[object.number] = object
14
13
  end
15
14
 
@@ -0,0 +1,55 @@
1
+ module Correios
2
+ module SRO
3
+ class RequestBuilder
4
+
5
+ QUERY_TYPES = { list: "L", range: "F" }.freeze
6
+
7
+ RESULT_MODES = { all: "T", last: "U" }.freeze
8
+
9
+ LANGUAGE = { pt: "101", en: "102" }.freeze
10
+
11
+ NAMESPACES = {
12
+ "xmlns:soapenv" => "http://schemas.xmlsoap.org/soap/envelope/",
13
+ "xmlns:res" => "http://resource.webservice.correios.com.br/"
14
+ }.freeze
15
+
16
+ def initialize(tracker)
17
+ @tracker = tracker
18
+ end
19
+
20
+ def build_xml
21
+ Nokogiri::XML::Builder.new do |builder|
22
+ builder[:soapenv].Envelope(NAMESPACES) {
23
+ builder[:soapenv].Header { }
24
+ builder[:soapenv].Body {
25
+ builder[:res].buscaEventosLista() {
26
+ builder.usuario(@tracker.user) {
27
+ builder.parent.namespace = nil
28
+ }
29
+ builder.senha(@tracker.password) {
30
+ builder.parent.namespace = nil
31
+ }
32
+ builder.tipo(QUERY_TYPES[@tracker.query_type]) {
33
+ builder.parent.namespace = nil
34
+ }
35
+ builder.resultado(RESULT_MODES[@tracker.result_mode]) {
36
+ builder.parent.namespace = nil
37
+ }
38
+ builder.lingua(LANGUAGE[@tracker.language]) {
39
+ builder.parent.namespace = nil
40
+ }
41
+ @tracker.object_numbers.each do |object_number|
42
+ builder.objetos(object_number) {
43
+ builder.parent.namespace = nil
44
+ }
45
+ end
46
+ }
47
+ }
48
+ }
49
+ end.to_xml
50
+ end
51
+
52
+
53
+ end
54
+ end
55
+ end
@@ -1,11 +1,11 @@
1
1
  module Correios
2
2
  module SRO
3
3
  class Tracker
4
- attr_accessor :user, :password
5
- attr_accessor :query_type, :result_mode
4
+
5
+ attr_accessor :user, :password, :query_type, :result_mode, :language
6
6
  attr_reader :object_numbers
7
7
 
8
- DEFAULT_OPTIONS = { query_type: :list, result_mode: :last }.freeze
8
+ DEFAULT_OPTIONS = { query_type: :list, result_mode: :last, language: :pt }.freeze
9
9
 
10
10
  def initialize(options = {})
11
11
  DEFAULT_OPTIONS.merge(options).each do |attr, value|
@@ -1,5 +1,5 @@
1
1
  module Correios
2
2
  module SRO
3
- VERSION = "0.3.1"
3
+ VERSION = "0.4.0"
4
4
  end
5
5
  end
@@ -4,9 +4,7 @@ require 'uri'
4
4
  module Correios
5
5
  module SRO
6
6
  class WebService
7
- URL = "http://websro.correios.com.br/sro_bin/sroii_xml.eventos"
8
- QUERY_TYPES = { list: "L", range: "F" }
9
- RESULT_MODES = { all: "T", last: "U" }
7
+ URL = "http://webservice.correios.com.br:80/service/rastro"
10
8
 
11
9
  def initialize(tracker)
12
10
  @uri = URI.parse(URL)
@@ -20,9 +18,10 @@ module Correios
20
18
  Correios::SRO.log_request request, @uri.to_s
21
19
 
22
20
  response = http.request(request)
21
+
23
22
  Correios::SRO.log_response response
24
23
 
25
- response.body
24
+ response.body.force_encoding('utf-8')
26
25
  end
27
26
 
28
27
  private
@@ -35,18 +34,14 @@ module Correios
35
34
 
36
35
  def build_request
37
36
  request = Net::HTTP::Post.new(@uri.path)
38
- request.set_form_data(request_params)
37
+ request.content_type = 'text/xml;charset=UTF-8'
38
+ request.add_field("Accept-Encoding", "UTF-8")
39
+ request.body = request_body
39
40
  request
40
41
  end
41
42
 
42
- def request_params
43
- {
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
49
- }
43
+ def request_body
44
+ RequestBuilder.new(@tracker).build_xml
50
45
  end
51
46
  end
52
47
  end
@@ -4,11 +4,6 @@ describe Correios::SRO::Parser do
4
4
  describe "#objects" do
5
5
  let(:xml) { Fixture.load :sro_many_objects }
6
6
 
7
- it "encodes from ISO-8859-1 to UTF-8" do
8
- expect(xml).to receive(:encode!).with("UTF-8", "ISO-8859-1")
9
- subject.objects(xml)
10
- end
11
-
12
7
  ["SI047624825BR", "SX104110463BR"].each do |number|
13
8
  it "returns object number" do
14
9
  objects = subject.objects(xml)
@@ -22,11 +17,11 @@ describe Correios::SRO::Parser do
22
17
  { "SI047624825BR" => {
23
18
  type: "BDI",
24
19
  status: "01",
25
- date: "26/12/2011",
20
+ date: "26/12/2016",
26
21
  hour: "15:22",
27
- description: "Entregue",
28
- receiver: "",
29
- document: "",
22
+ description: "Objeto entregue ao destinatário",
23
+ receiver: "?",
24
+ document: "?",
30
25
  comment: "?",
31
26
  place: "AC CENTRAL DE SAO PAULO",
32
27
  code: "01009972",
@@ -37,15 +32,15 @@ describe Correios::SRO::Parser do
37
32
  "SX104110463BR" => {
38
33
  type: "BDE",
39
34
  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",
35
+ date: "26/12/2016",
36
+ hour: "15:22",
37
+ description: "Objeto entregue ao destinatário",
38
+ receiver: nil,
39
+ document: nil,
40
+ comment: nil,
41
+ place: "AC CENTRAL DE SAO PAULO",
42
+ code: "01009972",
43
+ city: "SAO PAULO",
49
44
  state: "SP",
50
45
  sto: "74654209"
51
46
  },
@@ -65,7 +60,7 @@ describe Correios::SRO::Parser do
65
60
  { "SI047624825BR" => {
66
61
  place: "CTE VILA MARIA",
67
62
  code: "02170975",
68
- city: "SAO PAULO",
63
+ city: "Sao Paulo",
69
64
  neighborhood: "PQ NOVO MUNDO",
70
65
  state: "SP"
71
66
  },
@@ -1,6 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Correios::SRO::Tracker do
4
+
4
5
  describe ".new" do
5
6
  it "creates with default values" do
6
7
  expect(subject.query_type).to eql :list
@@ -58,7 +59,7 @@ describe Correios::SRO::Tracker do
58
59
  end
59
60
 
60
61
  let(:subject) { Correios::SRO::Tracker.new(user: "PRODIS", password: "pim321") }
61
- let(:response) { "" }
62
+
62
63
  before { Correios::SRO::WebService.any_instance.stub(:request!).and_return(response) }
63
64
 
64
65
  context "to many objects" do
@@ -84,10 +85,10 @@ describe Correios::SRO::Tracker do
84
85
  expect(objects.size).to eql 2
85
86
 
86
87
  expect(objects["SI047624825BR"].number).to eql "SI047624825BR"
87
- expect(objects["SI047624825BR"].events.first.description).to eql "Entregue"
88
+ expect(objects["SI047624825BR"].events.first.description).to eql "Objeto entregue ao destinatário"
88
89
 
89
90
  expect(objects["SX104110463BR"].number).to eql "SX104110463BR"
90
- expect(objects["SX104110463BR"].events.first.description).to eql "Entregue"
91
+ expect(objects["SX104110463BR"].events.first.description).to eql "Objeto entregue ao destinatário"
91
92
  end
92
93
 
93
94
  context "when only one object found" do
@@ -103,7 +104,7 @@ describe Correios::SRO::Tracker do
103
104
 
104
105
  expect(objects.size).to eql 1
105
106
  expect(objects["SI047624825BR"].number).to eql "SI047624825BR"
106
- expect(objects["SI047624825BR"].events.first.description).to eql "Entregue"
107
+ expect(objects["SI047624825BR"].events.first.description).to eql "Objeto entregue ao destinatário"
107
108
  end
108
109
 
109
110
  it "returns nil in object not found" do
@@ -115,6 +116,7 @@ describe Correios::SRO::Tracker do
115
116
 
116
117
  context "to one object" do
117
118
  let(:response) { Fixture.load :sro_one_object }
119
+ let(:object_number) { "SI047624825BR" }
118
120
 
119
121
  it "sets object number" do
120
122
  subject.get("SI047624825BR")
@@ -125,7 +127,7 @@ describe Correios::SRO::Tracker do
125
127
  it "returns only one object" do
126
128
  object = subject.get("SI047624825BR")
127
129
  expect(object.number).to eql "SI047624825BR"
128
- expect(object.events.first.description).to eql "Entregue"
130
+ expect(object.events.first.description).to eql "Objeto entregue ao destinatário"
129
131
  end
130
132
 
131
133
  context "when object not found" do
@@ -2,6 +2,8 @@ require 'spec_helper'
2
2
 
3
3
  describe Correios::SRO::WebService do
4
4
  describe "#request" do
5
+ let(:object_number) { "SS123456789BR" }
6
+
5
7
  around do |example|
6
8
  Correios::SRO.configure { |config| config.log_enabled = false }
7
9
  example.run
@@ -10,13 +12,13 @@ describe Correios::SRO::WebService do
10
12
 
11
13
  let(:tracker) do
12
14
  sro = Correios::SRO::Tracker.new(user: "ECT", password: "SRO")
13
- sro.instance_variable_set :@object_numbers, ["SS123456789BR"]
15
+ sro.instance_variable_set :@object_numbers, [object_number]
14
16
  sro
15
17
  end
16
18
  let(:subject) { Correios::SRO::WebService.new(tracker) }
17
19
 
18
20
  it "returns XML response", vcr: { cassette_name: "sro_found_last" } do
19
- expect(subject.request!).to include("<numero>SS123456789BR</numero>")
21
+ expect(subject.request!).to include("<numero>#{object_number}</numero>")
20
22
  end
21
23
  end
22
24
  end
@@ -0,0 +1,51 @@
1
+ require 'spec_helper'
2
+
3
+ describe Correios::SRO::RequestBuilder do
4
+
5
+ describe ".build_xml" do
6
+
7
+ let(:subject) { described_class.new(tracker).build_xml }
8
+
9
+ context "given one tracking object" do
10
+ let(:tracker) do
11
+ sro = Correios::SRO::Tracker.new(user: "EXT", password: "APQ",
12
+ query_type: :list,
13
+ result_mode: :all
14
+ )
15
+ sro.instance_variable_set :@object_numbers, ["SS123456789BR"]
16
+ sro
17
+ end
18
+
19
+ it { expect(subject).to include("<usuario>EXT</usuario>") }
20
+ it { expect(subject).to include("<senha>APQ</senha>") }
21
+ it { expect(subject).to include("<tipo>L</tipo>") }
22
+ it { expect(subject).to include("<resultado>T</resultado>") }
23
+ it { expect(subject).to include("<lingua>101</lingua>") }
24
+ it { expect(subject).to include("<objetos>SS123456789BR</objetos>") }
25
+
26
+ end
27
+
28
+ context "given more than one tracking object" do
29
+ let(:tracker) do
30
+ sro = Correios::SRO::Tracker.new(user: "ECT", password: "SRO",
31
+ language: :en,
32
+ query_type: :range,
33
+ result_mode: :last
34
+ )
35
+ sro.instance_variable_set :@object_numbers, ["SS123456730BR", "SS12345650BR"]
36
+ sro
37
+ end
38
+
39
+ it { expect(subject).to include("<usuario>ECT</usuario>") }
40
+ it { expect(subject).to include("<senha>SRO</senha>") }
41
+ it { expect(subject).to include("<tipo>F</tipo>") }
42
+ it { expect(subject).to include("<resultado>U</resultado>") }
43
+ it { expect(subject).to include("<lingua>102</lingua>") }
44
+ it { expect(subject).to include("<objetos>SS123456730BR</objetos>") }
45
+ it { expect(subject).to include("<objetos>SS12345650BR</objetos>") }
46
+
47
+ end
48
+
49
+ end
50
+
51
+ end
@@ -2,10 +2,24 @@
2
2
  http_interactions:
3
3
  - request:
4
4
  method: post
5
- uri: http://websro.correios.com.br/sro_bin/sroii_xml.eventos
5
+ uri: http://webservice.correios.com.br/service/rastro
6
6
  body:
7
- encoding: US-ASCII
8
- string: Usuario=ECT&Senha=SRO&Tipo=L&Resultado=U&Objetos=SS123456789BR
7
+ encoding: UTF-8
8
+ string: |
9
+ <?xml version="1.0"?>
10
+ <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:res="http://resource.webservice.correios.com.br/">
11
+ <soapenv:Header/>
12
+ <soapenv:Body>
13
+ <res:buscaEventosLista>
14
+ <usuario>ECT</usuario>
15
+ <senha>SRO</senha>
16
+ <tipo>L</tipo>
17
+ <resultado>U</resultado>
18
+ <lingua>101</lingua>
19
+ <objetos>SS123456789BR</objetos>
20
+ </res:buscaEventosLista>
21
+ </soapenv:Body>
22
+ </soapenv:Envelope>
9
23
  headers:
10
24
  Accept-Encoding:
11
25
  - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
@@ -14,44 +28,38 @@ http_interactions:
14
28
  User-Agent:
15
29
  - Ruby
16
30
  Content-Type:
17
- - application/x-www-form-urlencoded
31
+ - text/xml
18
32
  response:
19
33
  status:
20
34
  code: 200
21
35
  message: OK
22
36
  headers:
23
37
  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
38
+ - Mon, 27 Jun 2016 13:10:36 GMT
39
+ X-Powered-By:
40
+ - Servlet/3.0
41
+ X-Opnet-Transaction-Trace:
42
+ - a2_05669c39-8570-4f65-b8b8-3c2c86883d68
27
43
  Content-Length:
28
- - '850'
44
+ - '1093'
45
+ Set-Cookie:
46
+ - _op_aixPageId=a2_05669c39-8570-4f65-b8b8-3c2c86883d68; Path=/
47
+ Expires:
48
+ - Thu, 01 Dec 1994 16:00:00 GMT
49
+ Cache-Control:
50
+ - no-cache="set-cookie, set-cookie2"
29
51
  Content-Type:
30
- - text/html; charset=ISO-8859-1
31
- X-Cache:
32
- - MISS from 127.0.0.1
52
+ - text/xml; charset=UTF-8
53
+ Content-Language:
54
+ - pt-BR
33
55
  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
56
+ encoding: UTF-8
57
+ string: <?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header><X-OPNET-Transaction-Trace:X-OPNET-Transaction-Trace
58
+ xmlns:X-OPNET-Transaction-Trace="http://opnet.com">pid=135270,requestid=0ba77bf1a686bb8ac2d2956daab521c191713276963afdd8</X-OPNET-Transaction-Trace:X-OPNET-Transaction-Trace></soapenv:Header><soapenv:Body><ns2:buscaEventosListaResponse
59
+ xmlns:ns2="http://resource.webservice.correios.com.br/"><return><versao>2.0</versao><qtd>1</qtd><objeto><numero>SS123456789BR</numero><sigla>DG</sigla><nome>ENCOMENDA
60
+ SEDEX (ETIQ LOGICA)</nome><categoria>SEDEX</categoria><evento><tipo>RO</tipo><status>01</status><data>25/06/2016</data><hora>08:54</hora><descricao>Objeto
61
+ encaminhado </descricao><local>CDD JOAO MONLEVADE</local><codigo>35930971</codigo><cidade>Joao
62
+ Monlevade</cidade><uf>MG</uf><destino><local>AC ALVINOPOLIS</local><codigo>35950970</codigo><cidade>Alvinopolis</cidade><bairro>Centro</bairro><uf>MG</uf></destino></evento></objeto></return></ns2:buscaEventosListaResponse></soapenv:Body></soapenv:Envelope>
63
+ http_version:
64
+ recorded_at: Mon, 27 Jun 2016 13:10:38 GMT
65
+ recorded_with: VCR 2.9.3