| HTTP-OAI documentation | Contained in the HTTP-OAI distribution. |
HTTP::OAI::ListSets - Provide access to an OAI ListSets response
my $r = $h->ListSets();
while( my $rec = $r->next ) {
print $rec->setSpec, "\n";
}
die $r->message if $r->is_error;
This constructor method returns a new OAI::ListSets object.
Returns either an HTTP::OAI::Set object, or undef, if no more records are available. Use $set->is_error to test whether there was an error getting the next record.
If -resume was set to false in the Harvest Agent, next may return a string (the resumptionToken).
Returns the set list and optionally adds a new set or resumptionToken, $set. Returns an array ref of HTTP::OAI::Sets, with an optional resumptionToken string.
Returns and optionally sets the HTTP::OAI::ResumptionToken.
Returns a XML::DOM object representing the ListSets response.
| HTTP-OAI documentation | Contained in the HTTP-OAI distribution. |
package HTTP::OAI::ListSets; use strict; use warnings; use vars qw( @ISA ); @ISA = qw( HTTP::OAI::PartialList ); sub new { my ($class,%args) = @_; $args{handlers} ||= {}; $args{handlers}->{description} ||= 'HTTP::OAI::Metadata'; my $self = $class->SUPER::new(%args); $self->{in_set} = 0; $self; } sub set { shift->item(@_) } sub generate_body { my ($self) = @_; return unless defined(my $handler = $self->get_handler); for( $self->set ) { $_->set_handler($handler); $_->generate; } if( defined($self->resumptionToken) ) { $self->resumptionToken->set_handler($handler); $self->resumptionToken->generate; } } sub start_element { my ($self,$hash) = @_; my $elem = lc($hash->{Name}); if( !$self->{in_set} ) { if( $elem eq 'set' ) { $self->set_handler(new HTTP::OAI::Set( version=>$self->version, handlers=>$self->{handlers} )); $self->{'in_set'} = $hash->{Depth}; } elsif( $elem eq 'resumptiontoken' ) { $self->set_handler(new HTTP::OAI::ResumptionToken( version=>$self->version )); $self->{'in_set'} = $hash->{Depth}; } } $self->SUPER::start_element($hash); } sub end_element { my ($self,$hash) = @_; my $elem = lc($hash->{LocalName}); $self->SUPER::end_element($hash); if( $self->{'in_set'} == $hash->{Depth} ) { if( $elem eq 'set' ) { $self->set( $self->get_handler ); $self->set_handler( undef ); $self->{in_set} = 0; } elsif( $elem eq 'resumptionToken' ) { $self->resumptionToken( $self->get_handler ); $self->set_handler( undef ); $self->{in_set} = 0; } } } 1; __END__