File Coverage

blib/lib/Net/DRI/Protocol/DAS/Domain.pm
Criterion Covered Total %
statement 12 36 33.3
branch 0 16 0.0
condition 0 3 0.0
subroutine 4 7 57.1
pod 0 3 0.0
total 16 65 24.6


line stmt bran cond sub pod time code
1             ## Domain Registry Interface, DAS Domain commands
2             ##
3             ## Copyright (c) 2007,2009,2010,2013 Patrick Mevzek . All rights reserved.
4             ##
5             ## This file is part of Net::DRI
6             ##
7             ## Net::DRI is free software; you can redistribute it and/or modify
8             ## it under the terms of the GNU General Public License as published by
9             ## the Free Software Foundation; either version 2 of the License, or
10             ## (at your option) any later version.
11             ##
12             ## See the LICENSE file that comes with this distribution for more details.
13             ####################################################################################################
14              
15             package Net::DRI::Protocol::DAS::Domain;
16              
17 1     1   613 use strict;
  1         2  
  1         21  
18 1     1   43 use warnings;
  1         2  
  1         25  
19              
20 1     1   3 use Net::DRI::Util;
  1         11  
  1         21  
21 1     1   4 use Net::DRI::Exception;
  1         1  
  1         272  
22              
23             =pod
24              
25             =head1 NAME
26              
27             Net::DRI::Protocol::DAS::Domain - DAS Domain commands for Net::DRI
28              
29             =head1 DESCRIPTION
30              
31             Please see the README file for details.
32              
33             =head1 SUPPORT
34              
35             For now, support questions should be sent to:
36              
37             Enetdri@dotandco.comE
38              
39             Please also see the SUPPORT file in the distribution.
40              
41             =head1 SEE ALSO
42              
43             Ehttp://www.dotandco.com/services/software/Net-DRI/E
44              
45             =head1 AUTHOR
46              
47             Patrick Mevzek, Enetdri@dotandco.comE
48              
49             =head1 COPYRIGHT
50              
51             Copyright (c) 2007,2009,2010,2013 Patrick Mevzek .
52             All rights reserved.
53              
54             This program is free software; you can redistribute it and/or modify
55             it under the terms of the GNU General Public License as published by
56             the Free Software Foundation; either version 2 of the License, or
57             (at your option) any later version.
58              
59             See the LICENSE file that comes with this distribution for more details.
60              
61             =cut
62              
63             ####################################################################################################
64              
65             sub register_commands
66             {
67 0     0 0   my ($class,$version)=@_;
68 0           my %tmp=(
69             check => [ \&check, \&check_parse ],
70             );
71              
72 0           return { 'domain' => \%tmp };
73             }
74              
75             sub check
76             {
77 0     0 0   my ($po,$domain,$rd)=@_;
78 0           my $mes=$po->message();
79 0 0         Net::DRI::Exception->die(1,'protocol/DAS',2,'Domain name needed') unless $domain;
80 0 0         Net::DRI::Exception->die(1,'protocol/DAS',10,'Invalid domain name: '.$domain) unless Net::DRI::Util::is_hostname($domain);
81 0           my $tld=$po->tld();
82 0 0         $domain=~s/\.${tld}$// if defined $tld;
83 0           $mes->command('get');
84 0           $mes->command_param(lc($domain));
85 0           return;
86             }
87              
88             sub check_parse
89             {
90 0     0 0   my ($po,$otype,$oaction,$oname,$rinfo)=@_;
91 0           my $mes=$po->message();
92 0 0         return unless $mes->is_success();
93              
94 0           my $rr=$mes->response();
95 0 0         my $domain=(defined $po->tld())? lc($rr->{Domain}.'.'.$po->tld()) : lc($rr->{Domain});
96 0           $rinfo->{domain}->{$domain}->{action}='check';
97 0           my $s=uc($rr->{Status});
98 0 0 0       $rinfo->{domain}->{$domain}->{exist}=($s eq 'FREE' || $s eq 'AVAILABLE')? 0 : 1;
99 0           $rinfo->{domain}->{$domain}->{exist_reason}=$rr->{Status};
100 0 0         if (exists $rr->{'IDNA Domain'})
101             {
102 0 0         $rinfo->{domain}->{$domain}->{ace}=(defined $po->tld())? lc($rr->{'IDNA Domain'}.'.'.$po->tld()) : lc($rr->{'IDNA Domain'});
103             }
104 0           return;
105             }
106              
107             ####################################################################################################
108             1;