Module: FreightKit::Trackable

Included in:
CCYQ, CarrierLogistics, DPHE, FWDA, SAIA, TQYL, TheGreatInformationFactory
Defined in:
lib/freight_kit/helpers/trackable.rb

Instance Method Summary collapse

Instance Method Details

#find_tracking_info(tracking_number) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/freight_kit/helpers/trackable.rb', line 5

def find_tracking_info(tracking_number, *)
  request = build_tracking_request(tracking_number)
  begin
    # For SOAP APIs, the :action parameter is required
    response = commit(:track, request) if method(:commit).parameters.count == 2
    response ||= commit(request)
  rescue StandardError => e
    return TrackingResponse.new(error: e, request:)
  end

  return response if response.is_a?(TrackingResponse)

  if method(:parse_tracking_response).parameters.count == 1
    parse_tracking_response(response)
  else
    # Carrier Logistics requires tracking number argument
    parse_tracking_response(tracking_number, response:)
  end
end