IO-EPP
view release on metacpan or search on metacpan
lib/IO/EPP/CoreNic.pm view on Meta::CPAN
my @atypes = ( 'int', 'loc' );
foreach my $atype ( @atypes ) {
my ( $postal ) = $rdata =~ /<postalInfo type="$atype">(.+?)<\/postalInfo>/;
next unless $postal;
( $cont{$atype}{name} ) = $postal =~ /<name>([^<>]+)<\/name>/;
( $cont{$atype}{company} ) = $rdata =~ /<org>([^<>]*)<\/org>/;
$cont{$atype}{addr} = join(', ', $postal =~ /<street>([^<>]*)<\/street>/ );
( $cont{$atype}{city} ) = $postal =~ /<city>([^<>]*)<\/city>/;
( $cont{$atype}{'state'} ) = $postal =~ /<sp>([^<>]*)<\/sp>/;
( $cont{$atype}{postcode} ) = $postal =~ /<pc>([^<>]*)<\/pc>/;
( $cont{$atype}{country_code} ) = $postal =~ /<cc>([A-Z]+)<\/cc>/;
}
( $cont{phone} ) = $rdata =~ /<voice[^<>]*>([0-9+.]*)<\/voice>/;
( $cont{fax} ) = $rdata =~ /<fax[^<>]*>([0-9+.]*)<\/fax>/;
( $cont{email} ) = $rdata =~ /<email>([^<>]+)<\/email>/;
# <status s="linked"/>
my @ss = $rdata =~ /<status s="([^"]+)"\/>/g;
$cont{statuses}{$_} = '+' for @ss;
if ( $rdata =~ /<authInfo><pw>(.+?)<\/pw>/ ) {
$cont{authinfo} = $1;
}
my ( $visible ) = $rdata =~ /<contact:disclose flag=['"](\d)['"]>/;
$cont{pp_flag} = $visible ? 0 : 1;
my %id = %IO::EPP::Base::id;
foreach my $k ( keys %id ) {
if ( $rdata =~ /<$k>([^<>]+)<\/$k>/ ) {
$cont{$id{$k}} = $1;
}
}
my %dt = %IO::EPP::Base::dt;
foreach my $k ( keys %dt ) {
if ( $rdata =~ /<$k>([^<>]+)<\/$k>/ ) {
$cont{$dt{$k}} = $1;
$cont{$dt{$k}} =~ s/T/ /;
$cont{$dt{$k}} =~ s/\.\d+Z$//;
}
}
return \%cont;
}
sub update_contact {
my ( $self, $params ) = @_;
if ( $params->{chg} ) {
$params->{chg}{need_name} = 1;
$params->{chg}{authinfo} = IO::EPP::Base::gen_pw( 12 );
}
return $self->SUPER::update_contact( $params );
}
sub get_ns_info_rdata {
my ( undef, $rdata ) = @_;
my %ns;
( $ns{name} ) = $rdata =~ /<name>([^<>]+)<\/name>/;
$ns{name} = lc $ns{name};
( $ns{roid} ) = $rdata =~ /<roid>([^<>]+)<\/roid>/;
# <host:status s="ok"/>
my @ss = $rdata =~ /<status s="([^"]+)"\s*\/>/g;
$ns{statuses}{$_} = '+' for @ss;
$ns{addrs} = [ $rdata =~ /<addr ip="v\d">([0-9A-Fa-f.:]+)<\/addr>/g ];
my %id = %IO::EPP::Base::id;
foreach my $k ( keys %id ) {
if ( $rdata =~ /<$k>([^<>]+)<\/$k>/ ) {
$ns{$id{$k}} = $1;
}
}
my %dt = %IO::EPP::Base::dt;
foreach my $k ( keys %dt ) {
if ( $rdata =~ /<$k>([^<>]+)<\/$k>/ ) {
$ns{$dt{$k}} = $1;
$ns{$dt{$k}} =~ s/T/ /;
$ns{$dt{$k}} =~ s/\.\d+Z$//;
}
}
return \%ns;
}
sub check_domains_rdata {
my ( undef, $rdata ) = @_;
my @aa = $rdata =~ /<cd>(<name avail="[a-z]+">[^<>]+<\/name>(?:<reason>[^<>]+<\/reason>)?)<\/cd>/sg;
my %domlist;
foreach my $a ( @aa ) {
if ( $a =~ /<name avail="(true|false)">([^<>]+)<\/name>/ ) {
my $dm = lc($2);
$domlist{$dm} = { avail => ( $1 eq 'true' ? 1 : 0 ) }; # no utf8, puny only
if ( $a =~ /<reason>([^<>]+)<\/reason>/ ) {
$domlist{$dm}{reason} = $1;
( run in 0.445 second using v1.01-cache-2.11-cpan-7f9471e7e0a )