File: Status.pm

package info (click to toggle)
libnet-dri-perl 0.96-1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze, wheezy
  • size: 3,616 kB
  • ctags: 2,922
  • sloc: perl: 39,615; makefile: 2
file content (135 lines) | stat: -rw-r--r-- 3,651 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
## Domain Registry Interface, EPP Status
##
## Copyright (c) 2005,2007,2008 Patrick Mevzek <netdri@dotandco.com>. All rights reserved.
##
## This file is part of Net::DRI
##
## Net::DRI is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; either version 2 of the License, or
## (at your option) any later version.
##
## See the LICENSE file that comes with this distribution for more details.
#
# 
#
####################################################################################################

package Net::DRI::Protocol::EPP::Core::Status;

use base qw!Net::DRI::Data::StatusList!;

use strict;

use Net::DRI::Exception;

our $VERSION=do { my @r=(q$Revision: 1.6 $=~/\d+/g); sprintf("%d".".%02d" x $#r, @r); };

=pod

=head1 NAME

Net::DRI::Protocol::EPP::Core::Status - EPP Status for Net::DRI

=head1 DESCRIPTION

Please see the README file for details.

=head1 SUPPORT

For now, support questions should be sent to:

E<lt>netdri@dotandco.comE<gt>

Please also see the SUPPORT file in the distribution.

=head1 SEE ALSO

E<lt>http://www.dotandco.com/services/software/Net-DRI/E<gt>

=head1 AUTHOR

Patrick Mevzek, E<lt>netdri@dotandco.comE<gt>

=head1 COPYRIGHT

Copyright (c) 2005,2007,2008 Patrick Mevzek <netdri@dotandco.com>.
All rights reserved.

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

See the LICENSE file that comes with this distribution for more details.

=cut

####################################################################################################

sub new
{
 my $class=shift;
 my $self=$class->SUPER::new('epp','1.0');

 my %s=('delete'   => 'clientDeleteProhibited',
        'renew'    => 'clientRenewProhibited',
        'update'   => 'clientUpdateProhibited',
        'transfer' => 'clientTransferProhibited',
        'publish'  => 'clientHold',
       );
 $self->_register_pno(\%s);

 my $msg=shift;
 return $self unless defined($msg);

 if (ref($msg) eq 'ARRAY')
 {
  $self->add(@$msg);
 } else
 {
  Net::DRI::Exception::err_invalid_parameters();
 }

 return $self;
}

sub is_core_status
{
 return (shift=~m/^client(?:Hold|(?:Delete|Renew|Update|Transfer)Prohibited)$/);
}

sub build_xml
{
 my ($self,$name,$range)=@_;
 $range='core' unless defined($range);
 my @d;
 my $rd=$self->status_details();
 while(my ($k,$v)=each(%$rd))
 {
  next if (($range eq 'core') xor is_core_status($k));
  if ($v && ref($v) && keys(%$v))
  {
   my %tmp=(s => $k);
   $tmp{lang}=$v->{lang} if exists($v->{lang});
   push @d,[$name,$v->{msg} || '',\%tmp];
  } else
  {
   push @d,[$name,{s=>$k}];
  }
 }
 return @d;
}

sub is_active    { return shift->has_any('ok'); }
sub is_published { return shift->has_not('clientHold','serverHold','inactive'); }
sub is_pending   { return shift->has_any('pendingCreate','pendingDelete','pendingRenew','pendingTransfer','pendingUpdate'); }
sub is_linked    { return shift->has_any('linked'); }

sub can_delete   { return shift->has_not('clientDeleteProhibited','serverDeleteProhibited'); }
sub can_renew    { return shift->has_not('clientRenewProhibited','serverRenewProhibited'); }
sub can_update   { return shift->has_not('clientUpdateProhibited','serverUpdateProhibited'); }
sub can_transfer { return shift->has_not('clientTransferProhibited','serverTransferProhibited'); }

####################################################################################################
1;