package UPS::TrackRequest;
use strict;
use warnings;
use LWP::UserAgent;
use HTTP::Request::Common;
use XML::Simple;
use Data::Dumper;
use UPS::TrackedPackage;
use Class::MethodMaker
[
new => "new",
scalar => [ qw( License Username Password TrackingNumber _returned_xml debug) ],
scalar => [ [{ -default => 'https://wwwcie.ups.com/ups.app/xml/Track' }, 'URL'],
[{ -default => 'A Package'}, 'description']
]
];
sub requestTrack {
my $self = shift;
my $_ups_xml_req = "
$self->License
$self->UserName
$self->Password
$self->PackageName
Track
activity
$self->TrackingNumber
";
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;
#$self->{_returned_xml} = $xml->XMLin( $response->decoded_content);
my $processedXML = $xml->XMLin( $response->decoded_content);
#print Dumper($processedXML);
#print $processedXML->{Response}{Error}{ErrorDescription};
#return UPS::TrackedPackage->new( _returned_xml => $processedXML);
print (%{$processedXML});
return UPS::TrackedPackage->new( _returned_xml => %{$processedXML});
}
#sub {
1;
use strict;
use warnings;
package UPS::TrackedPackage;
use Class::MethodMaker
[
new => "new",
scalar => 'debug' ,
hash => '_returned_xml' ,
];
1;
#########My Test Script###########:
use strict;
use warnings;
use UPS::TrackRequest;
use Data::Dumper;
my $Package = UPS::TrackRequest->new();
$Package->Username('miles800');
#print $Package->Username();
#print $Package->URL();
my $tp = $Package->requestTrack();
print $Package->_returned_xml();
print $tp;
print Dumper($Package->_returned_xml());
#print $tp->_returned_xml()->{Shipment}{Shipper}{Address};