class Correios::Rastreamento

Constants

WEBSRO

Public Class Methods

new(codigo) click to toggle source
# File lib/correios.rb, line 40
def initialize(codigo)
  if codigo.nil? or codigo.empty?
    raise ArgumentError, "Especifique o código de rastreamento corretamente."
  end

  @codigo = codigo
end

Public Instance Methods

buscar() click to toggle source
# File lib/correios.rb, line 48
def buscar
  pagina = rastrear

  return if pagina.xpath("//tr").count == 0

  sro = []

  pagina.xpath("//tr[position() > 1]").each do |linha|
    if linha.search("td").count > 1
      sro << {
        :data => DateTime.strptime(linha.search("td[@rowspan][1]").text.strip, "%d/%m/%Y %H:%M"),
        :local => linha.search("td[2]").text.strip,
        :descricao => linha.search("td[3]").text.strip
      }

      if linha.search("td[@rowspan='2'][1]").count > 0
        sro.last.merge! :detalhes => linha.search(".//following-sibling::tr[1]").text.strip
      end
    end
  end

  sro
end
chegou?() click to toggle source
# File lib/correios.rb, line 72
def chegou?
  buscar.first[:descricao] == "Entrega Efetuada"
end

Private Instance Methods

rastrear() click to toggle source
# File lib/correios.rb, line 77
def rastrear
  Nokogiri::HTML open("#{WEBSRO}=#{@codigo}")
end