Class: Cekresi::Parser

Inherits:
Object
  • Object
show all
Defined in:
lib/cekresi/cekresi_parser.rb

Class Method Summary collapse

Class Method Details

.parse(container_result) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/cekresi/cekresi_parser.rb', line 3

def self.parse(container_result)
  expedition_name = container_result.find(".top_title").text
  tracking_number_info = container_result.all(".table-responsive")
  delivery_info = tracking_number_info[0]

  delivery_status_data, delivery_info_data = {}, {}
  delivery_info.all("tr").each do |item|
    hash_el = item.text.split(" : ")
    key_name = parse_info_attribute(hash_el)
    delivery_info_data[key_name.to_sym] = hash_el.last
  end

  tracking_number_info.each_with_index do |tracking_number, index|
    unless index.zero?
      key_name = tracking_number.find("b").text.tr(" ","_").downcase
      tracking_data = []
      tracking_number.all('tr').each_with_index do |list, tracking_number_index|
        unless tracking_number_index.zero?
          tracking_list_data = list.all('td')
          tracking_data << {shipment_date: tracking_list_data[0].text, shipment_location: tracking_list_data[1].text, shipment_status: tracking_list_data[2].text}
        end
      end
      delivery_status_data[key_name.to_sym] = tracking_data
    end
  end

  return {status: :ok, expedition_name: expedition_name, delivery_info: delivery_info_data, delivery_status: delivery_status_data}
end

.parse_info_attribute(info) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/cekresi/cekresi_parser.rb', line 33

def self.parse_info_attribute(info)
  new_key = info.first.tr(" ","_").downcase
  case new_key
  when "no_resi"
    new_key = 'tracking_number'
  when 'dikirim_tanggal'
    new_key = 'sent_time'
  when 'dikirim_oleh'
    new_key = 'sender'
  when 'dikirim_ke'
    new_key = 'receiver'
  end
  new_key
end