NAME

Business::UPS::Tracking - Interface to the UPS tracking webservice

SYNOPSIS

use Business::UPS::Tracking;

my $tracking = Business::UPS::Tracking->new(
  AccessLicenseNumber => '1CFFED5A5E91B17',
  UserId              => 'myupsuser',
  Password            => 'secret',
);

eval {
  my $response = $tracking->request(
    TrackingNumber  => '1Z12345E1392654435',
  )->run();
  
  foreach my $shipment ($response->shipment) {
      say 'Service code is '.$shipment->ServiceCode;
      foreach my $package ($shipment->Package) {
          say 'Status is '.$package->CurrentStatus;
      }
  }
};

if (my $e = Exception::Class->caught) {
  given ($e) {
    when ($_->isa('Business::UPS::Tracking::X::HTTP')) {
      say 'HTTP ERROR:'.$e->full_message;
    }
    when ($_->isa('Business::UPS::Tracking::X::UPS')) {
      say 'UPS ERROR:'.$e->full_message.' ('.$e->code.')';
    }
    default {
      say 'SOME ERROR:'.$e;
    }
  }
}

DESCRIPTION

Class structure

                  .-----------------------------------.
                  |     Business::UPS::Tracking       |
                  '-----------------------------------'
                                  ^
                               HAS ONE
                                  |
                  .-----------------------------------.
                  |         B::U::T::Request          |
                  '-----------------------------------'
                                  ^
                               HAS ONE
                                  |
                  .-----------------------------------.
                  |         B::U::T::Response         |
                  '-----------------------------------'
                                  |
                               HAS MANY
                                  v
                  .-----------------------------------.
                  |         B::U::T::Shipment         |
                  '-----------------------------------'
                      ^                           ^
                     ISA                         ISA
                      |                           |
.---------------------------------. .-----------------------------------.
|    B::U::T::Shipment::Freight   | |  B::U::T::Shipment::Smallpackage  |
|---------------------------------| |-----------------------------------|
| Freight shipment type           | | Small package shipment type       |
| Not yet implemented             | '-----------------------------------'
'---------------------------------'               |
                                               HAS MANY
                                                  v
                                    .-----------------------------------.
                                    |     B::U::T::Element::Package     |
                                    '-----------------------------------'
                                                  |
                                               HAS MANY
                                                  v
                                    .-----------------------------------.
                                    |    B::U::T::Element::Activity     |
                                    '-----------------------------------'

Exception Handling

If anythis goes wrong Business::UPS::Tracking throws an exception. Exceptions are always Exception::Class objects which contain structured information about the error. Please refer to the synopsis or to the Exception::Class documentation for documentation how to catch and rethrow exeptions.

The following exception classes are defined:

Business::UPS::Tracking::X

Basic exception class. All other exception classes inherit from this class.

Business::UPS::Tracking::X::HTTP

HTTP error. The object provides additional parameters:

Business::UPS::Tracking::X::UPS

UPS error message.The object provides additional parameters:

Business::UPS::Tracking::X::XML

XML parser or schema error.

Accessor / method naming

The naming of the methods and accessors tries to stick close to the names used by the UPS webservice. All accessors containg uppercase letters access xml data. Lowercase-only accessors and methods are used for utility functions.

UPS license

In order to use this module you need to obtain a "Tracking WebService" license key. See http://www.ups.com/e_comm_access/gettools_index for more information.

METHODS

new

my $tracking = Business::UPS::Tracking->new(%params);

Create a Business::UPS::Tracking object. See ACCESSORS for available parameters.

access_request

UPS access request.

request

my $request = $tracking->request(%request_params);

Returns a Business::UPS::Tracking::Request object.

request_run

my $response = $tracking->request_run(%request_params);

Generates a Business::UPS::Tracking::Request object and imideately executes it, returning a Business::UPS::Tracking::Response object.

ACCESSORS

AccessLicenseNumber

UPS tracking service access license number

UserId

UPS account username

Password

UPS account password

config

Optionally you can retrieve all or some UPS webservice credentials from a configuration file. This accessor holds the path to this file. Defaults to ~/.ups_tracking

Example configuration file:

<?xml version="1.0"?>
<UPS_tracking_webservice_config>
   <AccessLicenseNumber>1CFFED5A5E91B17</AccessLicenseNumber>
   <UserId>myupsuser</UserId>
   <Password>secret</Password>
</UPS_tracking_webservice_config>

retry_http

Number of retries if http errors occur

Defaults to 0

url

UPS Tracking webservice url.

Defaults to https://wwwcie.ups.com/ups.app/xml/Track

_ua

LWP::UserAgent object.

Automatically generated

SUPPORT

Please report any bugs or feature requests to bug-buisness-ups-tracking@rt.cpan.org, or through the web interface at http://rt.cpan.org/Public/Bug/Report.html?Queue=Business::UPS::Tracking. I will be notified, and then you'll automatically be notified of progress on your report as I make changes.

SEE ALSO

Download the UPS "OnLine® Tools Tracking Developer Guide" and get a developer key at http://www.ups.com/e_comm_access/gettools_index?loc=en_US. Please check the "Developer Guide" for more detailed documentation on the various fields.

The WebService::UPS::TrackRequest provides an alternative simpler implementation.

AUTHOR

Maroš Kollár
CPAN ID: MAROS
maros [at] k-1.com

http://www.k-1.com

COPYRIGHT

Business::UPS::Tracking is Copyright (c) 2012 Maroš Kollár - http://www.k-1.com

LICENCE

This library is free software, you can redistribute it and/or modify it under the same terms as Perl itself.