HTTP::OAI::Repository - Documentation for building an OAI compliant repository using OAI-PERL
Using the OAI-PERL library in a repository context requires the user to build the OAI responses to be sent to OAI harvesters.
use HTTP::OAI::Harvester; use HTTP::OAI::Metadata::OAI_DC; use XML::SAX::Writer; use XML::LibXML; # (all of these options _must_ be supplied to comply with the OAI protocol) # (protocolVersion and responseDate both have sensible defaults) my $r = new HTTP::OAI::Identify( baseURL=>'http://yourhost/cgi/oai', adminEmail=>'youremail@yourhost', repositoryName=>'agoodname', requestURL=>self_url() ); # Include a description (an XML::LibXML Dom object) $r->description(new HTTP::OAI::Metadata(dom=>$dom)); my $r = HTTP::OAI::Record->new( header=>HTTP::OAI::Header->new( identifier=>'oai:myrepo:10', datestamp=>'2004-10-01' ), metadata=>HTTP::OAI::Metadata::OAI_DC->new( dc=>{title=>['Hello, World!'],description=>['My Record']} ) ); $r->about(HTTP::OAI::Metadata->new(dom=>$dom)); my $output; my $w = XML::SAX::Writer->new(Output=>\$output); my $driver = HTTP::OAI::SAX::Driver->new( Handler => my $builder = XML::LibXML::SAX::Builder->new() ); $driver->start_oai_pmh(); $r->set_handler($w); $r->generate($driver); $driver->end_oai_pmh(); my $xml = $builder->result;
The validation scripts included in this module provide the repository admin with a number of tools for helping with being OAI compliant, however they can not be exhaustive in themselves.
These functions, exported by the Repository module, validate an OAI request against the protocol requirements. Returns an HTTP::Response object, with the code set to 200 if the request is well-formed, or an error code and the message set.
e.g:
my $r = validate_request(%paramlist); print header(-status=>$r->code.' '.$r->message), $r->error_as_HTML;
Note that validate_request attempts to be as strict to the Protocol as possible.
These functions, exported by the Repository module, validate the given type of OAI data. Returns true if the given value is sane, false otherwise.
See the bin/gateway.pl for an example implementation (it's actually for creating a static repository gateway, but you get the idea!).
To install HTTP::OAI, copy and paste the appropriate command in to your terminal.
cpanm
cpanm HTTP::OAI
CPAN shell
perl -MCPAN -e shell install HTTP::OAI
For more information on module installation, please visit the detailed CPAN module installation guide.