File Coverage

blib/lib/Net/DRI/DRD/VNDS.pm
Criterion Covered Total %
statement 25 48 52.0
branch 3 14 21.4
condition n/a
subroutine 10 17 58.8
pod 4 13 30.7
total 42 92 45.6


line stmt bran cond sub pod time code
1             ## Domain Registry Interface, "Verisign Naming and Directory Services" Registry Driver for .COM .NET .CC .TV .BZ .JOBS
2             ##
3             ## Copyright (c) 2005-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::DRD::VNDS;
16              
17 27     27   365924 use strict;
  27         46  
  27         932  
18 27     27   113 use warnings;
  27         39  
  27         765  
19              
20 27     27   111 use base qw/Net::DRI::DRD/;
  27         41  
  27         16545  
21              
22 27     27   292 use DateTime::Duration;
  27         54  
  27         14177  
23              
24             =pod
25              
26             =head1 NAME
27              
28             Net::DRI::DRD::VNDS - Verisign .COM/.NET/.CC/.TV/.BZ/.JOBS Registry driver for Net::DRI
29              
30             =head1 DESCRIPTION
31              
32             Please see the README file for details.
33              
34             =head1 SUPPORT
35              
36             For now, support questions should be sent to:
37              
38             Enetdri@dotandco.comE
39              
40             Please also see the SUPPORT file in the distribution.
41              
42             =head1 SEE ALSO
43              
44             Ehttp://www.dotandco.com/services/software/Net-DRI/E
45              
46             =head1 AUTHOR
47              
48             Patrick Mevzek, Enetdri@dotandco.comE
49              
50             =head1 COPYRIGHT
51              
52             Copyright (c) 2005-2013 Patrick Mevzek .
53             All rights reserved.
54              
55             This program is free software; you can redistribute it and/or modify
56             it under the terms of the GNU General Public License as published by
57             the Free Software Foundation; either version 2 of the License, or
58             (at your option) any later version.
59              
60             See the LICENSE file that comes with this distribution for more details.
61              
62             =cut
63              
64             ####################################################################################################
65              
66             sub new
67             {
68 26     26 0 56 my $class=shift;
69 26         241 my $self=$class->SUPER::new(@_);
70 26         244 $self->{info}->{check_limit}=5;
71 26         72 return $self;
72             }
73              
74 1     1 1 3 sub periods { return map { DateTime::Duration->new(years => $_) } (1..10); }
  10         352  
75 26     26 1 74 sub name { return 'VNDS'; }
76 32     32 1 169 sub tlds { return qw/com net cc tv bz jobs/; } ## If this changes, VeriSign/NameStore will need to be updated also
77 0     0 1 0 sub object_types { return qw/domain ns/; }
78 0     0 0 0 sub profile_types { return qw/epp whois/; }
79              
80             sub transport_protocol_default
81             {
82 26     26 0 57 my ($self,$type)=@_;
83              
84 26 100       91 return ('Net::DRI::Transport::Socket',{},'Net::DRI::Protocol::RRP',{}) if $type eq 'rrp'; ## this is used only for internal tests
85 25 50       147 return ('Net::DRI::Transport::Socket',{},'Net::DRI::Protocol::EPP::Extensions::VeriSign',{}) if $type eq 'epp';
86 0 0       0 return ('Net::DRI::Transport::Socket',{remote_host=>'whois.verisign-grs.com'},'Net::DRI::Protocol::Whois',{}) if $type eq 'whois';
87 0         0 return;
88             }
89              
90             ####################################################################################################
91              
92             sub verify_name_domain
93             {
94 7     7 0 16 my ($self,$ndr,$domain,$op)=@_;
95 7         57 return $self->_verify_name_rules($domain,$op,{check_name => 1,
96             my_tld => 1,
97             icann_reserved => 1,
98             });
99             }
100              
101             ## We can not start a transfer, if domain name has already been transfered less than 15 days ago.
102             sub verify_duration_transfer
103             {
104 0     0 0   my ($self,$ndr,$duration,$domain,$op)=@_;
105              
106 0           return $self->_verify_duration_transfer_15days($ndr,$duration,$domain,$op);
107             }
108              
109             ####################################################################################################
110              
111             sub domain_whowas
112             {
113 0     0 0   my ($self,$ndr,$domain,$rd)=@_;
114 0           $self->enforce_domain_name_constraints($ndr,$domain,'whowas');
115              
116 0           my $rc=$ndr->try_restore_from_cache('domain',$domain,'whowas');
117 0 0         if (! defined $rc) { $rc=$ndr->process('domain','whowas',[$domain,$rd]); }
  0            
118 0           return $rc;
119             }
120              
121             sub domain_suggest
122             {
123 0     0 0   my ($self,$ndr,$domain,$rd)=@_;
124 0 0         Net::DRI::Exception::usererr_invalid_parameters('domain_suggestion domain/key must be a string of 2 to 32 characters') unless Net::DRI::Util::xml_is_string($domain,2,32);
125 0 0         $self->enforce_domain_name_constraints($ndr,$domain,'suggestion') unless $domain=~m/\s/; ## if we have a space, then $domain is a list of keywords
126 0           my $rc=$ndr->try_restore_from_cache('domain',$domain,'suggesion');
127 0 0         if (! defined $rc) { $rc=$ndr->process('domain','suggestion',[$domain,$rd]); }
  0            
128 0           return $rc;
129             }
130              
131             sub twofactorauth_create
132             {
133 0     0 0   my ($self,$ndr,$rd)=@_;
134 0           return $ndr->process('authsession','create',[$rd]);
135             }
136              
137             sub balance_info
138             {
139 0     0 0   my ($self,$ndr)=@_;
140 0           return $ndr->process('balance','info');
141             }
142              
143             ####################################################################################################
144             1;