Net::OAI::Base - A base class for all OAI-PMH responses


OAI-Harvester documentation Contained in the OAI-Harvester distribution.

Index


Code Index:

NAME

Top

Net::OAI::Base - A base class for all OAI-PMH responses

SYNOPSIS

Top

    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(); 

DESCRIPTION

Top

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

METHODS

Top

errorCode()

Returns an error code associated with the verb result.

errorString()

Returns an error message associated with an error code.

HTTPError()

Returns the HTTP::Response object in case of HTTP level errors.

resumptionToken()

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.

xml()

Returns a reference to a scalar that contains the raw content of the response as XML.

file()

Returns the path to a file that contains the complete XML response.

TODO

Top

SEE ALSO

Top

AUTHORS

Top

* Ed Summers <ehs@pobox.com>

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;