42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
# File 'lib/newgistics_api/tracking.rb', line 42
def self.decorate(response)
return {} if (package = (response["Packages"] || [])[0]).nil?
return {} if (events = package["PackageTrackingEvents"] || []).empty?
raise NewgisticsApi::NotFoundTrackingNumberError.new if response["Status"] == STATUS_NOT_FOUND
shipped_event = events.find { |event| event && SHIPPED_CODES.include?(event["EventCode"]) }
delivered_event = events.find { |event| event && DELIVERED_CODES.include?(event["EventCode"]) }
{
ngst_status: package["Status"],
simple_status: determine_simple_status(
package,
shipped_event,
delivered_event
),
all_events: events,
relevant_events: {
shipped: shipped_event ? { timestamp: parse_event_date(shipped_event), details: shipped_event } : nil,
delivered: delivered_event ? { timestamp: parse_event_date(delivered_event), details: delivered_event } : nil
}
}
end
|