Dancer-Plugin-Catmandu-OAI
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
lib/Dancer/Plugin/Catmandu/OAI.pm view on Meta::CPAN
package Dancer::Plugin::Catmandu::OAI;
=head1 NAME
Dancer::Plugin::Catmandu::OAI - OAI-PMH provider backed by a searchable Catmandu::Store
=cut
our $VERSION = '0.0508';
use Catmandu::Sane;
use Catmandu::Util qw(is_string is_array_ref hash_merge);
use Catmandu;
use Catmandu::Fix;
use Catmandu::Exporter::Template;
use Data::MessagePack;
use MIME::Base64 qw(encode_base64url decode_base64url);
use Dancer::Plugin;
use Dancer qw(:syntax);
use DateTime;
use DateTime::Format::ISO8601;
use DateTime::Format::Strptime;
my $DEFAULT_LIMIT = 100;
my $VERBS = {
GetRecord => {
valid => {metadataPrefix => 1, identifier => 1},
required => [qw(metadataPrefix identifier)],
},
Identify => {valid => {}, required => [],},
ListIdentifiers => {
valid => {
metadataPrefix => 1,
from => 1,
until => 1,
set => 1,
resumptionToken => 1
},
required => [qw(metadataPrefix)],
},
ListMetadataFormats =>
{valid => {identifier => 1, resumptionToken => 1}, required => [],},
ListRecords => {
valid => {
metadataPrefix => 1,
from => 1,
until => 1,
set => 1,
resumptionToken => 1
},
required => [qw(metadataPrefix)],
},
ListSets => {valid => {resumptionToken => 1}, required => [],},
};
{
state $mp = Data::MessagePack->new->utf8;
sub _deserialize {
$mp->unpack(decode_base64url($_[0]));
}
sub _serialize {
encode_base64url($mp->pack($_[0]));
}
}
sub _new_token {
my ($settings, $hits, $params, $from, $until, $old_token) = @_;
my $n = $old_token && $old_token->{_n} ? $old_token->{_n} : 0;
$n += $hits->size;
view all matches for this distributionview release on metacpan - search on metacpan
( run in 0.550 second using v1.00-cache-2.02-grep-82fe00e-cpan-1925d2aa809 )