| Net-DRI documentation | Contained in the Net-DRI distribution. |
Net::DRI::Protocol::EPP::Extensions::NO::Result - .NO Result Condition EPP Mapping for Net::DRI
Please see the README file for details.
For now, support questions should be sent to:
<netdri@dotandco.com>
Please also see the SUPPORT file in the distribution.
<http://www.dotandco.com/services/software/Net-DRI/>
Trond Haugen, <info@norid.no>
Copyright (c) 2008 UNINETT Norid AS, <http://www.norid.no>, Trond Haugen, <info@norid.no> 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.
| Net-DRI documentation | Contained in the Net-DRI distribution. |
## Domain Registry Interface, .NO Result extension ## ## Copyright (c) 2008 UNINETT Norid AS, E<lt>http://www.norid.noE<gt>, ## Trond Haugen E<lt>info@norid.noE<gt> ## 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::Extensions::NO::Result; use strict; our $VERSION = do { my @r = ( q$Revision: 1.3 $ =~ /\d+/gxm ); sprintf( "%d" . ".%02d" x $#r, @r ); };
#################################################################################################### sub register_commands { my ( $class, $version ) = @_; my %tmp = ( # hmmm, would like to parse our login response extensions as well, # but that doesn't work .. #login => [ undef, \&condition_parse ], check => [ undef, \&condition_parse ], info => [ undef, \&condition_parse ], create => [ undef, \&condition_parse ], delete => [ undef, \&condition_parse ], transfer_request => [ undef, \&condition_parse ], transfer_query => [ undef, \&condition_parse ], transfer_cancel => [ undef, \&condition_parse ], transfer_execute => [ undef, \&condition_parse ], update => [ undef, \&condition_parse ], renew => [ undef, \&condition_parse ], withdraw => [ undef, \&condition_parse ], nocommand => [ undef, \&condition_parse ], ); return { 'domain' => \%tmp, 'contact' => \%tmp, 'host' => \%tmp }; } sub condition_parse { my ( $po, $otype, $oaction, $oname, $rinfo ) = @_; my $mes = $po->message(); my $condata = $mes->get_extension( 'no_result', 'conditions' ); return unless $condata; parse( $mes, $otype, $oname, $rinfo, $condata ); return 1; } sub parse { my ( $mes, $otype, $oname, $rinfo, $node ) = @_; my $NS = $mes->ns('no_result'); my @conditions; foreach my $el ( $node->getElementsByTagNameNS( $NS, 'condition' ) ) { my %con; my $c = $el->getFirstChild(); $con{code} = $el->getAttribute('code') if $el->getAttribute('code'); $con{severity} = $el->getAttribute('severity') if $el->getAttribute('severity'); while ($c) { my $name = $c->localname() || $c->nodeName(); next unless $name; if ( $name =~ m/^(msg|details)$/mx ) { $con{$1} = $c->getFirstChild()->getData(); } elsif ( $name =~ m/^attributes$/mx ) { foreach my $attr ( $c->getChildrenByTagNameNS( $NS, 'attr' ) ) { my $attrname = $attr->getAttribute('name'); $con{ "attr " . $attrname } = $attr->getFirstChild()->getData(); } } $c = $c->getNextSibling(); } push @conditions, \%con; } # Extension results can be returned in all 3 object types $rinfo->{$otype}->{$oname}->{conditions} = \@conditions; return; } ############################################################################## 1;