Business-US-USPS-WebTools
view release on metacpan or search on metacpan
lib/Business/US/USPS/WebTools/TrackConfirm.pm view on Meta::CPAN
my $ip = $hash->{'ClientIp'} // '127.0.0.1';
my $source = $hash->{'SourceId'} // __PACKAGE__;
my $xml =
qq|<TrackFieldRequest USERID="$user">| .
qq|<Revision>1</Revision>| .
qq|<ClientIp><![CDATA[ $ip ]]></ClientIp>| .
qq|<SourceId><![CDATA[ $source ]]></SourceId>| .
qq|<TrackID ID="$id">|;
foreach my $field ( $self->_fields ) {
next if $field eq 'TrackID';
next unless defined $hash->{$field};
$xml .= "<$field>$$hash{$field}</$field>";
}
$xml .= qq|</TrackID></TrackFieldRequest>|;
return $xml;
}
=pod
<TrackSummary>
<EventTime>8:34 pm</EventTime>
<EventDate>September 25, 2018</EventDate>
<Event>Departed</Event>
<EventCity>NEWARK</EventCity>
<EventState /><EventZIPCode />
<EventCountry>UNITED STATES</EventCountry>
<FirmName />
<Name />
<AuthorizedAgent>false</AuthorizedAgent>
<EventCode>AT</EventCode>
</TrackSummary>"
=cut
sub _parse_response {
my( $self ) = @_;
my $res = $self->tx->result;
my( $summary ) = $res->dom->at( 'TrackSummary' );
my $details = $res->dom->find( 'TrackDetail' );
#my %hash = ();
#$hash{'TrackSummary'} = $summary->to_string;
my $summary_parsed = $self->_parse_subbits( $summary );
my $array = $details->map(
sub { $self->_parse_subbits( $_ ) }
)->to_array;
unshift @$array, $summary_parsed;
bless $array, ref $self; # 'Hash::AsObject';
}
sub _parse_subbits {
state $rc = require Hash::AsObject;
state $fields = [ qw(
EventTime EventDate Event EventCity EventState EventZIPCode
EventCountry FirmName Name AuthorizedAgent
) ];
my( $self, $subbit ) = @_;
my %hash;
foreach my $field ( @$fields ) {
my( $value ) = eval { $subbit->at( $field )->text };
$hash{$field} = $value // '';
}
bless \%hash, 'Hash::AsObject';
}
=item test_server_host
The testing API uses stg-production.shippingapis.com instead of the
usual testing server.
=cut
sub test_server_host { "stg-production.shippingapis.com" };
sub _api_path { "/ShippingAPI.dll" }
=back
=head1 TO DO
=head1 SEE ALSO
L<Business::US::USPS::WebTools>
The WebTools API is documented on the US Postal Service's website:
https://www.usps.com/business/web-tools-apis/track-and-confirm-api.htm
=head1 SOURCE AVAILABILITY
This source is in GitHub:
https://github.com/ssimms/business-us-usps-webtools
=head1 AUTHOR
brian d foy
=head1 MAINTAINER
Steve Simms
=head1 COPYRIGHT AND LICENSE
Copyright © 2020, Steve Simms. All rights reserved.
This program is free software; you can redistribute it and/or modify
it under the terms of the Artistic License 2.0.
( run in 0.514 second using v1.01-cache-2.11-cpan-39bf76dae61 )