Class: Trackerific::UPS

Inherits:
Base
  • Object
show all
Includes:
HTTParty
Defined in:
lib/trackerific/services/ups.rb

Overview

Provides package tracking support for UPS.

Class Method Summary (collapse)

Instance Method Summary (collapse)

Methods inherited from Base

#initialize

Constructor Details

This class inherits a constructor from Trackerific::Base

Class Method Details

+ (Array, Regexp) package_id_matchers

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

An Array of Regexp that matches valid UPS package IDs

Returns:

  • (Array, Regexp)

    the regular expression



43
44
45
# File 'lib/trackerific/services/ups.rb', line 43

def self.package_id_matchers
  [ /^.Z/, /^[HK].{10}$/ ]
end

+ (Array) required_options

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

The required options for tracking a UPS package

Returns:

  • (Array)

    the required options for tracking a UPS package



49
50
51
# File 'lib/trackerific/services/ups.rb', line 49

def self.required_options
  [:key, :user_id, :password]
end

Instance Method Details

- (Trackerific::Details) track_package(package_id)

Tracks a UPS package

Examples:

Track a package

ups = Trackerific::UPS.new key: 'api key', user_id: 'user', password: 'secret'
details = ups.track_package("1Z12345E0291980793")

Parameters:

  • package_id (String)

    the package identifier

Returns:

Raises:

  • (Trackerific::Error)

    raised when the server returns an error (invalid credentials, tracking package, etc.)



25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/trackerific/services/ups.rb', line 25

def track_package(package_id)
  super
  # connect to UPS via HTTParty
  http_response = self.class.post('/Track', :body => build_xml_request)
  # throw any HTTP errors
  http_response.error! unless http_response.code == 200
  # Check the response for errors, return a Trackerific::Error, or parse
  # the response from UPS and return a Trackerific::Details
  case http_response['TrackResponse']['Response']['ResponseStatusCode']
    when "0" then raise Trackerific::Error, parse_error_response(http_response)
    when "1" then return parse_success_response(http_response)
    else raise Trackerific::Error, "Invalid response code returned from server."
  end
end