###############################################################################
# Net::Whois::RIPE - implementation of RIPE Whois.
# Copyright (C) 2005 Paul Gampe, Kevin Baker
# vim:tw=78:ts=4
###############################################################################
package Net::Whois::RIPE::Iterator;
use strict;
use Carp;
use Net::Whois::RIPE::Object;
use Net::Whois::RIPE::Object::Template;
use vars qw($VERSION);
$VERSION = do { my @r = ( q$Revision: 1.1 $ =~ /\d+/g ); sprintf "%d." . "%02d" x $#r, @r };
# class wide debug flag 0=off,1=on,2=on for IO::Socket
my $DEBUG = 0;
sub new {
my $proto = shift;
my $class = ref($proto) || $proto;
unless ( @_ == 2 ) {
carp "new: expecting Net::Whois::RIPE object and a query string"
if $DEBUG;
return undef;
}
my $self = bless {
WHOIS => shift,
QUERY => shift,
DEBUG => 0,
}, $class;
unless ( ref( $self->{WHOIS} ) =~ /^Net::Whois::RIPE$/ ) {
carp "new: first parameter must be a Net::Whois::RIPE object" if $DEBUG;
return undef;
}
if ( $self->{QUERY} =~ /^\s*$/ ) {
carp "new: second parameter must be a whois query string" if $DEBUG;
return undef;
}
my $sock = $self->{SOCKET} = $self->{WHOIS}->_connect;
unless ( print $sock $self->{QUERY} ) {
carp "new: unable to print to socket:\n" . $self->{QUERY} if $DEBUG;
return undef;
}
return $self;
}
sub next {
my $self = shift;
my $sock = $self->{SOCKET};
unless ( $sock and $sock->connected ) {
carp 'no socket connection' if $DEBUG || $self->debug;
return undef;
}
my $obj = Net::Whois::RIPE::Object->new($sock);
return $obj if $obj;
$self->{WHOIS}->_disconnect();
return undef;
}
sub debug {
my $self = shift;
if (@_) {
ref($self) ? $self->{DEBUG} = shift: $DEBUG = shift;
}
return ref($self) ? ( $DEBUG || $self->{DEBUG} ) : $DEBUG;
}
sub DESTROY {
my $self = shift;
carp "Destroying ", ref($self) if $self->debug;
}
END {
carp "All Net::Whois::RIPE::Iterator objects are going away now." if $DEBUG;
}
###############################################################################
## P R I V A T E M E T H O D S
###############################################################################
1;
syntax highlighted by Code2HTML, v. 0.9.1