Class: ParcelApi::Track

Inherits:
Object
  • Object
show all
Defined in:
lib/parcel_api/track.rb

Overview

This module provides API requests to track the parcels and return tracking information for a specific tracking reference.

Constant Summary collapse

PARCELTRACK_URL =
'/ParcelTrack/3.0/parcels'

Instance Method Summary collapse

Constructor Details

#initialize(connection = nil) ⇒ Track

Creates a new ParcelApi::Track instance.



11
12
13
# File 'lib/parcel_api/track.rb', line 11

def initialize(connection=nil)
  @connection ||= connection || ParcelApi::Client.connection
end

Instance Method Details

#details(tracking_reference)

Return details for a specific tracking reference.

Parameters:

  • tracking_reference (String)

Returns:

  • Object of tracking details



19
20
21
22
23
24
25
26
27
# File 'lib/parcel_api/track.rb', line 19

def details(tracking_reference)
  details_url = File.join(PARCELTRACK_URL, tracking_reference.to_s)
  response = @connection.get details_url
  events = response.parsed['results'].tap do |d|
    d['tracking_events'].map {|e| e['event_datetime'] = Time.parse(e['event_datetime'])}
    d['tracking_events'].sort_by! {|k| k['event_datetime'].to_i}
  end
  RecursiveOpenStruct.new(events, recurse_over_arrays: true)
end