Provided by: libhttp-oai-perl_4.12-1_all bug

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!).