Class: JpPost::Tracking
- Inherits:
-
Object
- Object
- JpPost::Tracking
- Defined in:
- lib/jp_post/tracking.rb
Instance Method Summary collapse
-
#additional_services ⇒ Object
“Additional Services” string from tracking site.
-
#classification ⇒ Object
“Class of Goods” string from tracking site.
-
#history ⇒ Object
“History Information” table from tracking site.
-
#initialize(tracking_number) ⇒ Tracking
constructor
Create a new Tracking object.
Constructor Details
#initialize(tracking_number) ⇒ Tracking
Create a new Tracking object.
tracking_number - tracking number of the package to lookup.
Returns an instance of JpPost::Tracking.
12 13 14 15 16 17 18 19 |
# File 'lib/jp_post/tracking.rb', line 12 def initialize(tracking_number) raise ArgumentError unless tracking_number @tracking_number = tracking_number tracking_url = "https://trackings.post.japanpost.jp/services/srv/search/direct?reqCodeNo1=#{@tracking_number}&locale=en" @tracking_page = Nokogiri::HTML(Typhoeus.get(tracking_url).body) end |
Instance Method Details
#additional_services ⇒ Object
“Additional Services” string from tracking site
Returns additional_services String.
35 36 37 38 39 40 41 |
# File 'lib/jp_post/tracking.rb', line 35 def additional_services return nil if tracking_is_empty @delivery_status_details_box ||= @tracking_page.css(".indent table[summary='配達状況詳細']") additional_services = @delivery_status_details_box.css(".w_100").last.text.strip return additional_services end |
#classification ⇒ Object
“Class of Goods” string from tracking site
Returns classification String.
24 25 26 27 28 29 30 |
# File 'lib/jp_post/tracking.rb', line 24 def classification return nil if tracking_is_empty @delivery_status_details_box ||= @tracking_page.css(".indent table[summary='配達状況詳細']") classification = @delivery_status_details_box.css("tr:last .w_380").text.strip return classification end |
#history ⇒ Object
“History Information” table from tracking site
Returns tracking history as Array.
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/jp_post/tracking.rb', line 46 def history return nil if tracking_is_empty @history_information_box ||= @tracking_page.css(".indent table[summary='履歴情報']") history_columns = @history_information_box.css("tr") history_columns = history_columns[2..history_columns.size] # remove header history = [] history_columns.each_with_index do |tr, index| next if index.odd? # skip zip code row date = Chronic.parse(tr.css("td").first.text) rescue nil action = tr.css("td")[1].text.strip action = nil if action.empty? details = tr.css("td")[2].text.strip details = nil if action.empty? office = tr.css("td")[3].text.strip office = nil if action.empty? location = tr.css("td")[4].text.strip location = nil if action.empty? history << { date: date, action: action, details: details, office: office, location: location } end return history end |