MooseX-Types-NetAddr-IP-0.06/000755 000765 000024 00000000000 12044107153 016203 5ustar00tcainestaff000000 000000 MooseX-Types-NetAddr-IP-0.06/Changes000644 000765 000024 00000000702 12044107062 017474 0ustar00tcainestaff000000 000000 Revision history for Perl extension MooseX::Types::NetAddr::IP. 0.6 - added Class::Load v0.2 to PREREQ_PM to fix test failures under strawberry perl 0.05 - prevent loading NetAddr::IP in consumed module until used (Caleb Cushing) 0.04 - fixed some typos in the pod - added tests for NetAddrIPv4/6 ArrayRef coercions 0.03 - refactoring 0.02 - removed regexp validation 0.01 - original version; created by h2xs 1.23 MooseX-Types-NetAddr-IP-0.06/lib/000755 000765 000024 00000000000 12044107153 016751 5ustar00tcainestaff000000 000000 MooseX-Types-NetAddr-IP-0.06/Makefile.PL000644 000765 000024 00000001163 12044106220 020150 0ustar00tcainestaff000000 000000 use strict; use warnings; use ExtUtils::MakeMaker; WriteMakefile( NAME => 'MooseX::Types::NetAddr::IP', AUTHOR => 'Todd Caine ', LICENSE => 'perl', VERSION_FROM => 'lib/MooseX/Types/NetAddr/IP.pm', ABSTRACT_FROM => 'lib/MooseX/Types/NetAddr/IP.pm', INSTALLDIRS => 'site', PREREQ_PM => { 'Moose' => '0.41', 'MooseX::Types' => '0.19', 'namespace::clean' => '0.08', 'NetAddr::IP' => 0, 'Test::Exception' => 0, 'Class::Load' => '0.2', }, ); MooseX-Types-NetAddr-IP-0.06/MANIFEST000644 000765 000024 00000000400 12044107153 017326 0ustar00tcainestaff000000 000000 Changes Makefile.PL MANIFEST t/MooseX-Types-NetAddr-IP.t lib/MooseX/Types/NetAddr/IP.pm META.yml Module YAML meta-data (added by MakeMaker) META.json Module JSON meta-data (added by MakeMaker) MooseX-Types-NetAddr-IP-0.06/META.json000644 000765 000024 00000002073 12044107153 017626 0ustar00tcainestaff000000 000000 { "abstract" : "NetAddr::IP related types and coercions for Moose", "author" : [ "Todd Caine " ], "dynamic_config" : 1, "generated_by" : "ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.112150", "license" : [ "perl_5" ], "meta-spec" : { "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", "version" : "2" }, "name" : "MooseX-Types-NetAddr-IP", "no_index" : { "directory" : [ "t", "inc" ] }, "prereqs" : { "build" : { "requires" : { "ExtUtils::MakeMaker" : 0 } }, "configure" : { "requires" : { "ExtUtils::MakeMaker" : 0 } }, "runtime" : { "requires" : { "Class::Load" : "0.2", "Moose" : "0.41", "MooseX::Types" : "0.19", "NetAddr::IP" : 0, "Test::Exception" : 0, "namespace::clean" : "0.08" } } }, "release_status" : "stable", "version" : "0.06" } MooseX-Types-NetAddr-IP-0.06/META.yml000644 000765 000024 00000001157 12044107153 017460 0ustar00tcainestaff000000 000000 --- abstract: 'NetAddr::IP related types and coercions for Moose' author: - 'Todd Caine ' build_requires: ExtUtils::MakeMaker: 0 configure_requires: ExtUtils::MakeMaker: 0 dynamic_config: 1 generated_by: 'ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.112150' license: perl meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html version: 1.4 name: MooseX-Types-NetAddr-IP no_index: directory: - t - inc requires: Class::Load: 0.2 Moose: 0.41 MooseX::Types: 0.19 NetAddr::IP: 0 Test::Exception: 0 namespace::clean: 0.08 version: 0.06 MooseX-Types-NetAddr-IP-0.06/t/000755 000765 000024 00000000000 12044107153 016446 5ustar00tcainestaff000000 000000 MooseX-Types-NetAddr-IP-0.06/t/MooseX-Types-NetAddr-IP.t000644 000765 000024 00000005211 12026374774 023012 0ustar00tcainestaff000000 000000 use strict; use warnings; use Test::More tests => 22; use Test::Exception; use Moose::Util::TypeConstraints; use_ok 'MooseX::Types::NetAddr::IP'; isa_ok find_type_constraint('NetAddr::IP') => 'Moose::Meta::TypeConstraint'; { package NetAddrIPTest; use Moose; use MooseX::Types::NetAddr::IP qw( NetAddrIP ); has 'address' => ( is => 'ro', isa => NetAddrIP, coerce => 1 ); }{ my $ip = NetAddrIPTest->new({address => '127.0.0.1/32'})->address; isa_ok $ip, "NetAddr::IP", "coerced from string"; $ip = NetAddrIPTest->new({address => ['10.0.0.255', '255.0.0.0']})->address; isa_ok $ip, "NetAddr::IP", "coerced from string"; dies_ok { NetAddrIPTest->new({address => '343.0.0.1/320'}) } "invalid IP address"; } { package NetAddrIPv4Test; use Moose; use MooseX::Types::NetAddr::IP qw( NetAddrIPv4 ); has 'address' => ( is => 'ro', isa => NetAddrIPv4, coerce => 1, handles => [qw/ network broadcast /], ); }{ my $ip = NetAddrIPv4Test->new({address => '127.0.0.1/24'})->address; isa_ok $ip, "NetAddr::IP", "coerced from string"; is $ip->network->addr, '127.0.0.0'; is $ip->network, '127.0.0.0/24'; is $ip->broadcast->addr, '127.0.0.255'; is $ip->broadcast, '127.0.0.255/24'; $ip = NetAddrIPv4Test->new({address => ['10.0.0.255', '255.0.0.0']})->address; isa_ok $ip, "NetAddr::IP", "coerced from string"; foreach my $invalidIPv4Addr (qw( 1080:0:0:0:8:800:200C:417A 43.0.0.1/320 10.0.0.256 )) { throws_ok { NetAddrIPv4Test->new({address => $invalidIPv4Addr}); } qr/'$invalidIPv4Addr' is not an IPv4 address/, "invalid IPv4 address"; } } { package NetAddrIPv6Test; use Moose; use MooseX::Types::NetAddr::IP qw( NetAddrIPv6 ); has 'address' => ( is => 'ro', isa => NetAddrIPv6, coerce => 1 ); }{ foreach my $ipv6Addr (qw/ :: ::1 0:0:0:0:0:0:0:0 1080:0:0:0:8:800:200C:417A 1080::8:800:200C:417A ::FFFF:192.168.1.1 /) { my $ip = NetAddrIPv6Test->new({address => $ipv6Addr})->address; isa_ok $ip, "NetAddr::IP", "coerced from string"; } my $ip = NetAddrIPv6Test->new({ address => [ '1080:0:0:0:8:800:200C:417A', 'FFFF:FFFF:FFFF:FFFF:0000:0000:0000:0000' ], })->address; isa_ok $ip, "NetAddr::IP", "coerced from string"; throws_ok { NetAddrIPv6Test->new({address => '192.168.1.1'}) } qr/'192.168.1.1' is not an IPv6 address/, 'invalid IP address'; } MooseX-Types-NetAddr-IP-0.06/lib/MooseX/000755 000765 000024 00000000000 12044107153 020163 5ustar00tcainestaff000000 000000 MooseX-Types-NetAddr-IP-0.06/lib/MooseX/Types/000755 000765 000024 00000000000 12044107153 021267 5ustar00tcainestaff000000 000000 MooseX-Types-NetAddr-IP-0.06/lib/MooseX/Types/NetAddr/000755 000765 000024 00000000000 12044107153 022610 5ustar00tcainestaff000000 000000 MooseX-Types-NetAddr-IP-0.06/lib/MooseX/Types/NetAddr/IP.pm000644 000765 000024 00000004351 12044106736 023467 0ustar00tcainestaff000000 000000 package MooseX::Types::NetAddr::IP; use strict; use warnings; our $VERSION = '0.06'; use Class::Load 0.20 qw( load_class ); use MooseX::Types::Moose qw/Str ArrayRef/; use namespace::clean; use MooseX::Types -declare => [qw( NetAddrIP NetAddrIPv4 NetAddrIPv6 )]; class_type 'NetAddr::IP'; subtype NetAddrIP, as 'NetAddr::IP'; # can be either IPv4 or IPv6 subtype NetAddrIPv4, as 'NetAddr::IP'; # can be only IPv4 subtype NetAddrIPv6, as 'NetAddr::IP'; # can be only IPv6 coerce NetAddrIP, from Str, via { return load_class('NetAddr::IP')->new( $_ ) or die "'$_' is not an IP address.\n"; }; coerce NetAddrIP, from ArrayRef[Str], via { return load_class('NetAddr::IP')->new( @$_ ) or die "'@$_' is not an IP address.\n"; }; sub createAddress ($@) { my $version = shift; my $ipaddr = load_class('NetAddr::IP')->new( @_ ) or die "'@_' is not an IPv$version address.\n"; die "'@_' is not an IPv$version address." unless $ipaddr->version == $version; return $ipaddr; } coerce NetAddrIPv4, from Str, via { createAddress 4 => $_ }; coerce NetAddrIPv4, from ArrayRef[Str], via { createAddress 4 => @$_ }; coerce NetAddrIPv6, from Str, via { createAddress 6 => $_ }; coerce NetAddrIPv6, from ArrayRef[Str], via { createAddress 6 => @$_ }; 1; __END__ =head1 NAME MooseX::Types::NetAddr::IP - NetAddr::IP related types and coercions for Moose =head1 SYNOPSIS use MooseX::Types::NetAddr::IP qw( NetAddrIP NetAddrIPv4 NetAddrIPv6 ); =head1 DESCRIPTION This package provides internet address types for Moose. =head2 TYPES NetAddrIP Coerces from Str and ArrayRef via "new" in NetAddr::IP. NetAddrIPv4 Coerces from Str and ArrayRef via "new" in NetAddr::IP. NetAddrIPv6 Coerces from Str and ArrayRef via "new" in NetAddr::IP. =head1 SEE ALSO L, L =head1 AUTHOR Todd Caine, Etodd.caine@gmail.comE =head1 COPYRIGHT AND LICENSE Copyright (C) 2010 by Todd Caine This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.10.1 or, at your option, any later version of Perl 5 you may have available. =cut