kbrandt has asked for the wisdom of the Perl Monks concerning the following question:
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/Tra +ck' }, 'URL'], [{ -default => 'A Package'}, 'description'] ] ]; 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->PackageName</CustomerConte +xt> </TransactionReference> <RequestAction>Track</RequestAction> <RequestOption>activity</RequestOption> </Request> <TrackingNumber>$self->TrackingNumber</TrackingNumber> </TrackRequest> "; 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};
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Passing a Hash to another Object in MethodMaker
by kennethk (Abbot) on Mar 10, 2009 at 18:47 UTC | |
by kbrandt (Initiate) on Mar 10, 2009 at 20:17 UTC | |
by kennethk (Abbot) on Mar 10, 2009 at 20:37 UTC | |
by kbrandt (Initiate) on Mar 10, 2009 at 22:09 UTC |