Class: Trackerific::Services::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

can_track?, register, track

Constructor Details

#initialize(options = {}) ⇒ UPS

Returns a new instance of UPS.



19
20
21
# File 'lib/trackerific/services/ups.rb', line 19

def initialize(options={})
  @options = options
end

Class Method Details

.package_id_matchersArray, Regexp

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



26
27
28
# File 'lib/trackerific/services/ups.rb', line 26

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

Instance Method Details

#track(id) ⇒ Trackerific::Details

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.)



38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/trackerific/services/ups.rb', line 38

def track(id)
  @package_id = id
  # 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