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;
|