File Coverage

blib/lib/Net/DRI/Protocol/EPP/Extensions/ARNES/Domain.pm
Criterion Covered Total %
statement 15 43 34.8
branch 0 10 0.0
condition 0 9 0.0
subroutine 5 9 55.5
pod 0 4 0.0
total 20 75 26.6


line stmt bran cond sub pod time code
1             ## Domain Registry Interface, .SI Domain EPP extension commands
2             ##
3             ## Copyright (c) 2008-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::EPP::Extensions::ARNES::Domain;
16              
17 1     1   996 use strict;
  1         2  
  1         29  
18 1     1   4 use warnings;
  1         2  
  1         19  
19              
20 1     1   4 use Net::DRI::Exception;
  1         2  
  1         18  
21 1     1   3 use Net::DRI::Util;
  1         3  
  1         14  
22 1     1   4 use Net::DRI::Protocol::EPP::Util;
  1         1  
  1         386  
23              
24             =pod
25              
26             =head1 NAME
27              
28             Net::DRI::Protocol::EPP::Extensions::ARNES::Domain - ARNES (.SI) EPP Domain extension commands 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) 2008-2010,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 register_commands
67             {
68 0     0 0   my ($class,$version)=@_;
69 0           my %tmp=(
70             transfer_registrant_request => [ \&trade ],
71             transfer_request => [ \&transfer ],
72             );
73              
74 0           return { 'domain' => \%tmp };
75             }
76              
77             ####################################################################################################
78              
79             sub transfer_registrant
80             {
81 0     0 0   my ($epp,$domain,$rd)=@_;
82 0           my $mes=$epp->message();
83 0           my @d=Net::DRI::Protocol::EPP::Util::domain_build_command($mes,['transfer',{'op'=>'request'}],$domain);
84              
85 0           my $cs=$rd->{contact};
86 0           my $creg=$cs->get('registrant');
87 0 0         Net::DRI::Exception::usererr_invalid_parameters('registrant must be a contact object') unless (Net::DRI::Util::isa_contact($creg,'Net::DRI::Data::Contact::ARNES'));
88 0           push @d,['domain:registrant',$creg->srid()];
89 0 0         push @d,Net::DRI::Protocol::EPP::Util::build_period($rd->{duration}) if Net::DRI::Util::has_duration($rd);
90 0 0         push @d,Net::DRI::Protocol::EPP::Util::domain_build_authinfo($epp,$rd->{auth}) if Net::DRI::Util::has_auth($rd);
91              
92 0           $mes->command_body(\@d);
93 0           return;
94             }
95              
96             sub build_command_extension
97             {
98 0     0 0   my ($mes,$epp,$tag)=@_;
99 0           return $mes->command_extension_register($tag,sprintf('xmlns:dnssi="%s" xsi:schemaLocation="%s %s"',$mes->nsattrs('dnssi')));
100             }
101              
102             sub transfer_request
103             {
104 0     0 0   my ($epp,$domain,$rd)=@_;
105 0           my $mes=$epp->message();
106              
107 0           my @d;
108 0 0         push @d,Net::DRI::Protocol::EPP::Util::build_ns($epp,$rd->{ns},$domain) if Net::DRI::Util::has_ns($rd);
109              
110 0 0 0       Net::DRI::Exception::usererr_insufficient_parameters('Registrant, admin and tech contact are required for .SI domain name transfer') unless (Net::DRI::Util::has_contact($rd) && $rd->{contact}->has_type('registrant') && $rd->{contact}->has_type('admin') && $rd->{contact}->has_type('tech'));
      0        
      0        
111              
112 0           my $cs=$rd->{contact};
113 0           my @o=$cs->get('registrant');
114 0           push @d,['domain:registrant',$o[0]->srid()];
115 0           push @d,Net::DRI::Protocol::EPP::Util::build_core_contacts($epp,$cs);
116              
117 0           my $eid=build_command_extension($mes,$epp,'dnssi:ext');
118 0           $mes->command_extension($eid,['dnssi:transfer',['dnssi:domain',\@d]]);
119 0           return;
120             }
121              
122             ####################################################################################################
123             1;