table of contents
HTTP::OAI::Repository(3pm) | User Contributed Perl Documentation | HTTP::OAI::Repository(3pm) |
NAME¶
HTTP::OAI::Repository - Documentation for building an OAI compliant repository using OAI-PERL
DESCRIPTION¶
Using the OAI-PERL library in a repository context requires the user to build the OAI responses to be sent to OAI harvesters.
SYNOPSIS 1¶
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;
Building an OAI compliant repository¶
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.
METHODS¶
- $r = HTTP::OAI::Repository::validate_request(%paramlist)
- $r = HTTP::OAI::Repository::validate_request_2_0(%paramlist)
- 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.
- $b = HTTP::OAI::Repository::validate_date($date)
- $b = HTTP::OAI::Repository::validate_metadataPrefix($mdp)
- $b = HTTP::OAI::Repository::validate_responseDate($date)
- $b = HTTP::OAI::Repository::validate_setSpec($set)
- These functions, exported by the Repository module, validate the given type of OAI data. Returns true if the given value is sane, false otherwise.
EXAMPLE¶
See the bin/gateway.pl for an example implementation (it's actually for creating a static repository gateway, but you get the idea!).
2023-09-28 | perl v5.36.0 |