| OAI-Harvester documentation | Contained in the OAI-Harvester distribution. |
Net::OAI::Base - A base class for all OAI-PMH responses
if ( $object->resumptionToken() ) {
...
}
if ( $object->errorCode() ) {
print "verb action resulted in error code:" . $object->errorCode() .
" message:" . $object->errorString() . "\n";
}
print "xml response can be found here: " . $obj->file() . "\n";
print "the response xml is " . $obj->xml();
Net::OAI::Base is the base class for all the OAI-PMH verb responses. It is used to provide similar methods to all the responses. The following classes inherit from Net::OAI::Base.
Net::OAI::GetRecord
Net::OAI::Identify
Net::OAI::ListIdentifiers
Net::OAI::ListMetadataFormats
Net::OAI::ListRecords
Net::OAI::ListSets
Returns an error code associated with the verb result.
Returns an error message associated with an error code.
Returns the HTTP::Response object in case of HTTP level errors.
Returns a Net::OAI::ResumptionToken object associated with the call. If there was no resumption token returned in the response then you will be returned undef.
Returns a reference to a scalar that contains the raw content of the response as XML.
Returns the path to a file that contains the complete XML response.
| OAI-Harvester documentation | Contained in the OAI-Harvester distribution. |
package Net::OAI::Base; use strict;
sub errorCode { my $self = shift; if ( $self->{ error } ) { return( $self->{ error }->errorCode() ); } return( undef ); }
sub errorString { my $self = shift; if ( $self->{ error } ) { return( $self->{ error }->errorString() ); } return( undef ); }
sub HTTPError { my ( $self ) = @_; return undef unless $self->{ error }; return exists $self->{ error }->{ HTTPError } ? $self->{ error }->{ HTTPError } : undef; }
sub resumptionToken { my $self = shift; return( $self->{ token } ); }
sub xml { my( $self, %args ) = shift; return undef unless $self->{ file }; # not set eg. after HTTP error open( XML, $self->{ file } ) || die "unable to open $self->{ file }"; ## slurp entire file into $xml local $/ = undef; my $xml = <XML>; close(XML); # prevent tempfile leak on Win32 return( $xml ); }
sub file { my $self = shift; return( $self->{ file } ); } sub handleResumptionToken { my ( $self, $method ) = @_; my $harvester = exists( $self->{ harvester } ) ? $self->{ harvester } : 0; return() if ref($harvester) ne 'Net::OAI::Harvester'; my $rToken = $self->resumptionToken(); if ( $rToken ) { my $new = $harvester->$method( resumptionToken => $rToken->token(), metadataHandler => $self->{metadataHandler} ); $new->{ harvester } = $harvester; %$self = %$new; return( $self->next() ); } return(); }
1;