correios-sro 1.1.1 → 2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. data/README.rdoc +13 -9
  2. data/lib/correios-sro.rb +15 -12
  3. data/lib/track.rb +1 -8
  4. metadata +2 -2
data/README.rdoc CHANGED
@@ -14,21 +14,25 @@ Tracking object system from Correios (Brazil)
14
14
  require 'rubygems'
15
15
  require 'correios-sro'
16
16
 
17
- package = CorreiosSRO.track('SS987654321BR')
18
- package.number
19
- package.status.each do |status|
20
- puts status.date
21
- puts status.place
22
- puts status.track
23
- puts status.details
17
+ package = CorreiosSRO.track('RA090978804CN')
18
+ if package
19
+ puts package.number
20
+ package.status.each do |status|
21
+ puts status.date
22
+ puts status.place
23
+ puts status.track
24
+ puts status.details
25
+ end
24
26
  end
25
27
 
26
28
 
27
29
  === First or Last
28
30
 
29
31
  package = CorreiosSRO.track('SS987654321BR')
30
- puts package.first.date
31
- puts package.last.date
32
+ if package
33
+ puts package.first.date
34
+ puts package.last.date
35
+ end
32
36
 
33
37
 
34
38
  == Contributing
data/lib/correios-sro.rb CHANGED
@@ -1,17 +1,16 @@
1
1
  require "rubygems"
2
- require "nokogiri"
3
- require "open-uri"
4
2
  require "date"
3
+ require "open-uri"
4
+ require "nokogiri"
5
5
  require "track"
6
6
  require "status"
7
7
 
8
8
  class CorreiosSRO
9
9
 
10
10
  def self.track(number)
11
- @xml = open("http://correios-api.appspot.com/yql?numero=#{number}")
12
- @xml = Nokogiri::XML(@xml)
11
+ @html = Nokogiri::HTML(open("http://websro.correios.com.br/sro_bin/txect01$.QueryList?P_LINGUA=001&P_TIPO=001&P_COD_UNI=#{number}"))
13
12
 
14
- if @xml.xpath('/results/status').count > 0
13
+ if @html.xpath("//tr").count > 0
15
14
  track = Track.new(number)
16
15
  self.parse(track)
17
16
 
@@ -23,14 +22,18 @@ class CorreiosSRO
23
22
 
24
23
  private
25
24
  def self.parse(track)
26
- @xml.xpath('/results/status').each do |value|
27
- track << Status.new.tap { |s|
28
- s.date = DateTime.strptime(value.search('data').inner_text, '%d/%m/%Y %H:%M')
29
- s.place = value.search('local').inner_text
30
- s.track = value.search('situacao').inner_text
31
- s.details = value.search('detalhes').inner_text
32
- }
25
+
26
+ @html.xpath("//tr[position() > 1]").each do |row|
27
+ if row.search("td").count > 1
28
+ track << Status.new.tap { |s|
29
+ s.date = DateTime.strptime(row.search("td[@rowspan][1]").text.strip, "%d/%m/%Y %H:%M")
30
+ s.place = row.search("td[2]").text.strip
31
+ s.track = row.search("td[3]").text.strip
32
+ s.details = row.search(".//following-sibling::tr[1]").text.strip if row.search("td[@rowspan='2'][1]").count > 0
33
+ }
34
+ end
33
35
  end
36
+
34
37
  end
35
38
 
36
39
  end
data/lib/track.rb CHANGED
@@ -12,12 +12,5 @@ class Track
12
12
  a.date <=> b.date
13
13
  end
14
14
  end
15
-
16
- def first
17
- @status.first
18
- end
19
-
20
- def last
21
- @status.last
22
- end
15
+
23
16
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: correios-sro
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 1.1.1
5
+ version: "2.0"
6
6
  platform: ruby
7
7
  authors:
8
8
  - Caio Tarifa
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-04-24 00:00:00 Z
13
+ date: 2011-05-02 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: nokogiri