/usr/local/CPAN/HTTP-OAI/HTTP/OAI/PartialList.pm
package HTTP::OAI::PartialList;
use strict;
use warnings;
use vars qw( @ISA );
@ISA = qw( HTTP::OAI::Response );
sub new {
my( $class, %args ) = @_;
my $self = $class->SUPER::new(%args);
$self->{onRecord} = delete $args{onRecord};
$self->{item} ||= [];
return $self;
}
sub resumptionToken { shift->headers->header('resumptionToken',@_) }
sub item {
my $self = shift;
if( defined($self->{onRecord}) ) {
$self->{onRecord}->($_) for @_;
} else {
push(@{$self->{item}}, @_);
}
return wantarray ?
@{$self->{item}} :
$self->{item}->[0];
}
sub next {
my $self = shift;
return shift @{$self->{item}} if @{$self->{item}};
return undef unless $self->{'resume'} and $self->resumptionToken;
do {
$self->resume(resumptionToken=>$self->resumptionToken);
} while( $self->{onRecord} and $self->is_success and $self->resumptionToken );
return $self->is_success ? $self->next : undef;
}
1;