Business-UPS-Tracking
view release on metacpan or search on metacpan
lib/Business/UPS/Tracking/Utils.pm view on Meta::CPAN
# ============================================================================
package Business::UPS::Tracking::Utils;
# ============================================================================
use utf8;
use 5.0100;
use strict;
use warnings;
use Try::Tiny;
use Business::UPS::Tracking::Exception;
use Moose::Util::TypeConstraints;
use Business::UPS::Tracking;
use MooseX::Getopt::OptionTypeMap;
use Business::UPS::Tracking::Meta::Attribute::Trait::Printable;
use Encode;
=encoding utf8
=head1 NAME
Business::UPS::Tracking::Utils - Utility functions
=head1 SYNOPSIS
use Business::UPS::Tracking::Utils;
=head1 DESCRIPTION
This module provides some basic utility functions for
L<Business::UPS::Tracking> and defines some Moose type constraints and
coercions.
=head1 FUNCTIONS
=cut
subtype 'Business::UPS::Tracking::Type::XMLDocument'
=> as class_type('XML::LibXML::Document');
coerce 'Business::UPS::Tracking::Type::XMLDocument'
=> from 'Str'
=> via {
my $xml = $_;
$xml = decode("iso-8859-1", $xml);
my $parser = XML::LibXML->new(
#encoding => 'iso-8859-15'
);
return try {
return $parser->parse_string($xml);
} catch {
Business::UPS::Tracking::X::XML->throw(
error => $_ || 'Unknown error parsing xml document',
xml => $xml,
);
}
};
subtype 'Business::UPS::Tracking::Type::Date'
=> as class_type('DateTime');
subtype 'Business::UPS::Tracking::Type::DateStr'
=> as 'Str'
=> where {
m/^
(19|20)\d\d #year
(0[1-9]|1[012]) #month
(3[01]|[12]\d|0[1-9]) #day
$/x;
( run in 0.518 second using v1.01-cache-2.11-cpan-39bf76dae61 )