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 $writer = XML::SAX::Writer->new();
$r->set_handler($writer);
$r->generate;
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!).