WebService::UPS::TrackRequest - Generate a Request for Tracking Information


WebService-UPS documentation Contained in the WebService-UPS distribution.

Index


Code Index:

NAME

Top

WebService::UPS::TrackRequest - Generate a Request for Tracking Information

SYNOPSIS

Top

	my $Package = WebService::UPS::TrackRequest->new;
	$Package->Username('kbrandt');
	$Package->Password('topsecrent');
	$Package->License('8C3D7EE8FZZZZZ4');
	$Package->TrackingNumber('1ZA45Y5111111111');
	print $Package->Username();
	my $trackedpackage = $Package->requestTrack();

License

Top

	You will need to get a UPS Online Tools License and Account to use this module: http://www.ups.com/e_comm_access/gettools_index?loc=en_US

Methods

Top

new()

	$package = WebService::UPS::TrackRequest->new( Username => 'kbrandt');

The constructor method that creates a new Request Object.

License

You will need to register with UPS to get a developer key and then a License to access the XML Service

Username

Username for your UPS account

Password

Password for your UPS account

TrackingNumber

The Tracking number of your package

debug

Set this to something to make a lot of stuff appear

URL

The URL the request is set to, you shouldn't have to Touch this

Description

Optional, a human readable name for your package. Defaults to 'A Package'

requestTrack()

	my $trackedPackage = $package->requestTrack();

Sumbits the request to UPS and returns a TrackedPackage Object

AUTHOR

Top

Kyle Brandt, kyle@kbrandt.com http://www.kbrandt.com


WebService-UPS documentation Contained in the WebService-UPS distribution.

#===============================================================================
#         FILE:  WebService::UPS::TrackRequest.pm
#  DESCRIPTION:  OO Module to track UPS packages using the XML UPS API. 
#       AUTHOR:  Kyle Brandt (mn), kyle@kbrandt.com , http://www.kbrandt.com
#===============================================================================

our      $VERSION =  '0.1';
package WebService::UPS::TrackRequest;
use Mouse;
use LWP::UserAgent;
use HTTP::Request::Common;
use XML::Simple;
use Data::Dumper;
use WebService::UPS::TrackedPackage;

has 'License' => ( is => 'rw' );
has 'Username' => ( is => 'rw' );
has 'Password' => ( is => 'rw' );
has 'TrackingNumber' => ( is => 'rw' );
has 'debug' => ( is => 'rw' );
has 'URL' => ( is => 'rw', 
			   default => 'https://wwwcie.ups.com/ups.app/xml/Track');
has 'Description' => ( is => 'rw', 
			   default => 'A Package');


sub requestTrack {
	my $self = shift;
	my $_ups_xml_req = "
                <?xml version=\"1.0\" ?>
                <AccessRequest xml:lang='en-US'>
                        <AccessLicenseNumber>${\$self->License}</AccessLicenseNumber>
                        <UserId>${\$self->Username}</UserId>
                        <Password>${\$self->Password}</Password>
                </AccessRequest>
                <?xml version=\"1.0\" ?>
                <TrackRequest>
                        <Request>
                                <TransactionReference>
                                        <CustomerContext>${\$self->Description}</CustomerContext>
                                </TransactionReference>
                                <RequestAction>Track</RequestAction>
                                <RequestOption>activity</RequestOption>
                        </Request>
                  <TrackingNumber>${\$self->TrackingNumber}</TrackingNumber>
                  </TrackRequest>
                ";
	#print $self->PackageName;
    if (defined( $self->debug) ) { print $_ups_xml_req, "\n"; }
    my $userAgent = LWP::UserAgent->new(agent => 'perl post');
    my $response = $userAgent->request(POST $self->URL, Content_Type => 'text/xml',
                                                     Content => $_ups_xml_req);
    if (defined( $self->debug) ) { print $response->decoded_content, "\n"; }
    print $response->error_as_HTML unless $response->is_success;
    my $xml = new XML::Simple;
    my $processedXML = $xml->XMLin( $response->decoded_content);
	#print Dumper($processedXML);
    my $object = WebService::UPS::TrackedPackage->new();
    $object->_returned_xml($processedXML);
	return $object;
}

1;