module Chilexpress

Constants

VERSION

Public Class Methods

document_has_valid_order?(document) click to toggle source
# File lib/chilexpress.rb, line 23
def self.document_has_valid_order?(document)
  document.css('header.widget-header h3').any?
end
get_document(order_number) click to toggle source
# File lib/chilexpress.rb, line 19
def self.get_document(order_number)
  Nokogiri::HTML(open("http://www.chilexpress.cl/Views/ChilexpressCL/Resultado-busqueda.aspx?DATA=#{order_number}"))
end
get_order(order_number) click to toggle source
# File lib/chilexpress.rb, line 10
def self.get_order(order_number)
  document = get_document(order_number)
  return false unless document_has_valid_order?(document)
  shipment_attributes = get_shipment_info_from_document(document)
  shipment_attributes[:tracking_entries] = get_tracking_entries_from_document(document)
  shipment_attributes[:receiver] = get_receiver_from_document(document)
  Chilexpress::Shipment.new(shipment_attributes)
end
get_receiver_from_document(document) click to toggle source
# File lib/chilexpress.rb, line 36
def self.get_receiver_from_document(document)
  div = document.css('div.wigdet-content').select{ |div| div.text.include?('Datos de Descarga') }[0]
  return nil unless div
  receiver_info = div.css('ul li ul li')
  receiver_attributes = {}

  rut_index = receiver_info.to_a.each_index.select{ |i| receiver_info[i].children[0].text == 'Rut Receptor:' }[0]
  name_index = receiver_info.to_a.each_index.select{ |i| receiver_info[i].children[0].text == 'Nombre Receptor:' }[0]
  delivery_date_index = receiver_info.to_a.each_index.select{ |i| receiver_info[i].children[0].text == 'Fecha Entrega:' }[0]
  delivery_time_index = receiver_info.to_a.each_index.select{ |i| receiver_info[i].children[0].text == 'Hora Entrega:' }[0]

  receiver_attributes[:rut] = receiver_info[rut_index].children[1].text.strip[1..-1] if rut_index
  receiver_attributes[:name] = receiver_info[name_index].children[1].text.strip[1..-1] if name_index
  receiver_attributes[:delivery_date] = receiver_info[delivery_date_index].children[1].text.strip[1..-1] if delivery_date_index
  receiver_attributes[:delivery_time] = receiver_info[delivery_time_index].children[1].text.strip[1..-1] if delivery_time_index

  Chilexpress::Receiver.new(receiver_attributes)
end
get_shipment_info_from_document(document) click to toggle source
# File lib/chilexpress.rb, line 27
def self.get_shipment_info_from_document(document)
  div = document.css('div.wigdet-content').select{ |div| div.text.include?('Orden NÂș') }[0]
  shipment_info = div.css('ul li ul li')
  { order_number: shipment_info[0].children[1].text,
    product_type: shipment_info[1].children[1].text,
    service_type: shipment_info[2].children[1].text,
    status: shipment_info[3].children[1].text }
end
get_tracking_entries_from_document(document) click to toggle source
# File lib/chilexpress.rb, line 55
def self.get_tracking_entries_from_document(document)
  document_entries = document.css('table.addresses tbody tr')
  tracking_entries = []
  document_entries.each do |entry|
    content = entry.css('td')
    tracking_entries << Chilexpress::TrackingEntry.new(date: content[0].text, time: content[1].text, activity: content[2].text)
  end
  tracking_entries
end