File Coverage

blib/lib/Net/EPP/ResponseCodes.pm
Criterion Covered Total %
statement 114 114 100.0
branch n/a
condition n/a
subroutine 38 38 100.0
pod n/a
total 152 152 100.0


line stmt bran cond sub pod time code
1             package Net::EPP::ResponseCodes;
2 1     1   6 use base qw(Exporter);
  1         7  
  1         111  
3 1     1   6 use vars qw(@EXPORT);
  1         2  
  1         54  
4 1     1   5 use strict;
  1         3  
  1         59  
5              
6             =head1 NAME
7              
8             Net::EPP::ResponseCodes - a module to export some constants that
9             correspond to EPP response codes
10              
11             =head1 SYNOPSIS
12              
13             use Net::EPP::ResponseCodes;
14             use Net::EPP::Simple;
15             use strict;
16              
17             my $epp = Net::EPP::Simple->new(
18             host => 'epp.nic.tld',
19             user => 'my-id',
20             pass => 'my-password',
21             );
22              
23             my $result = $epp->domain_transfer_request('example.tld', 'foobar', 1);
24              
25             if ($result) {
26             print "Transfer initiated OK\n";
27              
28             } else {
29             if ($Net::EPP::Simple::Code == OBJECT_PENDING_TRANSFER) {
30             print "Error: domain is already pending transfer\n";
31              
32             } elsif ($Net::EPP::Simple::Code == INVALID_AUTH_INFO) {
33             print "Error: invalid authcode provided\n";
34              
35             } elsif ($Net::EPP::Simple::Code == OBJECT_DOES_NOT_EXIST) {
36             print "Error: domain not found\n";
37              
38             } elsif ($Net::EPP::Simple::Code == STATUS_PROHIBITS_OP) {
39             print "Error: domain cannot be transferred\n";
40              
41             } else {
42             print "Error code $Net::EPP::Simple::Code\n";
43              
44             }
45             }
46              
47             =head1 DESCRIPTION
48              
49             Every response sent to the client by an EPP server contains a CresultE>
50             element that has a C attribute. This is a four-digit
51             numeric code that describes the result of the request. This module exports
52             a set of constants that provide handy mnemonics for each of the defined
53             codes.
54              
55             =head1 EXPORTS
56              
57             C exports the following constants. The number in
58             brackets is the integer value associated with the constant.
59              
60             =head2 Successful command completion responses (1nnn)
61              
62             =over
63              
64             =item OK (1000)
65              
66             =item OK_PENDING (1001)
67              
68             =item OK_NO_MESSAGES (1300)
69              
70             =item OK_MESSAGES (1301)
71              
72             =item OK_BYE (1500)
73              
74             =back
75              
76             =head2 Command error responses (2nnn)
77              
78             =head3 Protocol Syntax
79              
80             =over
81              
82             =item UNKNOWN_COMMAND (2000)
83              
84             =item SYNTAX_ERROR (2001)
85              
86             =item USE_ERROR (2002)
87              
88             =item MISSING_PARAM (2003)
89              
90             =item PARAM_RANGE_ERROR (2004)
91              
92             =item PARAM_SYNTAX_ERROR (2005)
93              
94             =back
95              
96             =head3 Implementation-specific Rules
97              
98             =over
99              
100             =item UNIMPLEMENTED_VERSION (2100)
101              
102             =item UNIMPLEMENTED_COMMAND (2101)
103              
104             =item UNIMPLEMENTED_OPTION (2102)
105              
106             =item UNIMPLEMENTED_EXTENSION (2103)
107              
108             =item BILLING_FAILURE (2104)
109              
110             =item NOT_RENEWABLE (2105)
111              
112             =item NOT_TRANSFERRABLE (2106)
113              
114             =back
115              
116             =head3 Security (22nn)
117              
118             =over
119              
120             =item AUTHENTICATION_ERROR (2200)
121              
122             =item AUTHORISATION_ERROR (2201)
123              
124             =item AUTHORIZATION_ERROR (2201)
125              
126             =item INVALID_AUTH_INFO (2202)
127              
128             =back
129              
130             =head3 Data Management (23nn)
131              
132             =over
133              
134             =item OBJECT_PENDING_TRANSFER (2300)
135              
136             =item OBJECT_NOT_PENDING_TRANSFER (2301)
137              
138             =item OBJECT_EXISTS (2302)
139              
140             =item OBJECT_DOES_NOT_EXIST (2303)
141              
142             =item STATUS_PROHIBITS_OP (2304)
143              
144             =item ASSOC_PROHIBITS_OP (2305)
145              
146             =item PARAM_POLICY_ERROR (2306)
147              
148             =item UNIMPLEMENTED_OBJECT_SERVICE (2307)
149              
150             =item DATA_MGMT_POLICY_VIOLATION (2308)
151              
152             =back
153              
154             =head3 Server System (24nn)
155              
156             =over
157              
158             =item COMMAND_FAILED (2400)
159              
160             =back
161              
162             =head3 Connection Management (25nn)
163              
164             =over
165              
166             =item COMMAND_FAILED_BYE (2500)
167              
168             =item AUTH_FAILED_BYE (2501)
169              
170             =item SESSION_LIMIT_EXCEEDED_BYE (2502)
171              
172             =back
173              
174             =cut
175              
176             #
177             # Successful command completion responses:
178             #
179 1     1   7 use constant OK => 1000;
  1         2  
  1         69  
180 1     1   7 use constant OK_PENDING => 1001;
  1         2  
  1         53  
181 1     1   7 use constant OK_NO_MESSAGES => 1300;
  1         2  
  1         42  
182 1     1   6 use constant OK_MESSAGES => 1301;
  1         56  
  1         53  
183 1     1   6 use constant OK_BYE => 1500;
  1         10  
  1         42  
184              
185             #
186             # Command error responses:
187             #
188              
189             # Protocol Syntax:
190 1     1   5 use constant UNKNOWN_COMMAND => 2000;
  1         3  
  1         55  
191 1     1   8 use constant SYNTAX_ERROR => 2001;
  1         39  
  1         50  
192 1     1   6 use constant USE_ERROR => 2002;
  1         1  
  1         38  
193 1     1   6 use constant MISSING_PARAM => 2003;
  1         2  
  1         51  
194 1     1   6 use constant PARAM_RANGE_ERROR => 2004;
  1         2  
  1         63  
195 1     1   6 use constant PARAM_SYNTAX_ERROR => 2005;
  1         2  
  1         53  
196              
197             # Implementation-specific Rules:
198 1     1   6 use constant UNIMPLEMENTED_VERSION => 2100;
  1         2  
  1         47  
199 1     1   11 use constant UNIMPLEMENTED_COMMAND => 2101;
  1         2  
  1         60  
200 1     1   6 use constant UNIMPLEMENTED_OPTION => 2102;
  1         2  
  1         52  
201 1     1   6 use constant UNIMPLEMENTED_EXTENSION => 2103;
  1         2  
  1         43  
202 1     1   5 use constant BILLING_FAILURE => 2104;
  1         10  
  1         62  
203 1     1   21 use constant NOT_RENEWABLE => 2105;
  1         1  
  1         51  
204 1     1   7 use constant NOT_TRANSFERRABLE => 2106;
  1         2  
  1         50  
205              
206             # Security:
207 1     1   6 use constant AUTHENTICATION_ERROR => 2200;
  1         2  
  1         51  
208 1     1   6 use constant AUTHORISATION_ERROR => 2201;
  1         2  
  1         73  
209 1     1   7 use constant AUTHORIZATION_ERROR => 2201;
  1         2  
  1         73  
210 1     1   6 use constant INVALID_AUTH_INFO => 2202;
  1         2  
  1         64  
211              
212             # Data Management:
213 1     1   6 use constant OBJECT_PENDING_TRANSFER => 2300;
  1         2  
  1         53  
214 1     1   6 use constant OBJECT_NOT_PENDING_TRANSFER => 2301;
  1         2  
  1         46  
215 1     1   5 use constant OBJECT_EXISTS => 2302;
  1         2  
  1         54  
216 1     1   6 use constant OBJECT_DOES_NOT_EXIST => 2303;
  1         1  
  1         41  
217 1     1   6 use constant STATUS_PROHIBITS_OP => 2304;
  1         1  
  1         51  
218 1     1   9 use constant ASSOC_PROHIBITS_OP => 2305;
  1         1  
  1         51  
219 1     1   6 use constant PARAM_POLICY_ERROR => 2306;
  1         2  
  1         40  
220 1     1   5 use constant UNIMPLEMENTED_OBJECT_SERVICE => 2307;
  1         2  
  1         49  
221 1     1   6 use constant DATA_MGMT_POLICY_VIOLATION => 2308;
  1         1  
  1         51  
222              
223             # Server System:
224 1     1   6 use constant COMMAND_FAILED => 2400;
  1         3  
  1         41  
225              
226             # Connection Management:
227 1     1   8 use constant COMMAND_FAILED_BYE => 2500;
  1         4  
  1         53  
228 1     1   6 use constant AUTH_FAILED_BYE => 2501;
  1         2  
  1         43  
229 1     1   15 use constant SESSION_LIMIT_EXCEEDED_BYE => 2502;
  1         3  
  1         145  
230              
231             our @EXPORT;
232             my $package = __PACKAGE__;
233             foreach my $constant (keys(%constant::declared)) {
234             if ($constant =~ /^$package/) {
235             $constant =~ s/^$package\:\://;
236             push(@EXPORT, $constant);
237             }
238             }
239              
240             1;