NAME
Plack::App::Catmandu::SRU - drop in replacement for Dancer::Plugin::Catmandu::SRU
SYNOPSIS
use Plack::Builder;
Plack::App::Catmandu::SRU;
builder {
enable 'ReverseProxy';
enable '+Dancer::Middleware::Rebase', base => Catmandu->config->{uri_base}, strip => 1;
mount "/sru" => Plack::App::Catmandu::SRU->new(
store => 'search',
bag => 'publication',
cql_filter => 'type = dataset',
limit => 100,
maximum_limit => 500,
record_schemas => [
{
identifier => "info:srw/schema/1/mods-v3.6",
title => "MODS",
name => "mods_36",
template => "views/export/mods_36.tt",
fix => 'fixes/pub.fix'
},
],
)->to_app;
};
CONSTRUCTOR ARGUMENTS
- store
-
Name of Catmandu store in your catmandu store configuration
Default:
default
- bag
-
Name of Catmandu bag in your catmandu store configuration
Default:
data
This must be a bag that implements Catmandu::CQLSearchable, and that configures a
cql_mapping
- cql_filter
-
A CQL query to find all records in the database that should be made available to SRU
- default_record_schema
-
default metadata schema all records are shown in, when SRU parameter
recordSchema
is not gi en . Should be one listed inrecord_schemas
- limit
-
The default number of records to be returned in each SRU request, when SRU parameter
maximumRecords
is not given during a searchRetrieve request.When not provided in the constructor, it is derived from the default limit of your catmandu bag (see Catmandu::Searchable#default_limit)
- maximum_limit
-
The maximum value allowed for request parameter
maximumRecords
.When not provided in the constructor, it is derived from the maximum limit of your catmandu bag (see Catmandu::Searchable#maximum_limit)
- record_schemas
-
An array of all supported record schemas. Each item in the array is an object with attributes:
* identifier - The SRU identifier for the schema (see http://www.loc.gov/standards/sru/recordSchemas/)
* name - A short descriptive name for the schema
* fix - Optionally an array of fixes to apply to the records before they are transformed into XML
* template - The path to a Template Toolkit file to transform your records into this format
- template_options
-
An optional hash of configuration options that will be passed to Catmandu::Exporter::Template or Template
- content_type
-
Set a custom content type header, the default is
text/xml
. - title
-
Title shown in databaseInfo
- description
-
Description shown in databaseInfo
- default_search_params
-
Extra search parameters added during search in your catmandu bag:
$bag->search( %{$self->default_search_params}, cql_query => $cql, sru_sortkeys => $request->sortKeys, limit => $limit, start => $first - 1, );
Must be a hash reference
Note that search parameter
cql_query
,sru_sortkeys
,limit
andstart
are overwritten
As this is meant as a drop in replacement for Dancer::Plugin::Catmandu::SRU all arguments should be the same.
So all arguments can be taken from your previous dancer plugin configuration, if necessary:
use Dancer;
use Catmandu;
use Plack::Builder;
use Plack::App::Catmandu::SRU;
my $dancer_app = sub {
Dancer->dance(Dancer::Request->new(env => $_[0]));
};
builder {
enable 'ReverseProxy';
enable '+Dancer::Middleware::Rebase', base => Catmandu->config->{uri_base}, strip => 1;
mount "/sru" => Plack::App::Catmandu::SRU->new(
%{config->{plugins}->{'Catmandu::SRU'}}
)->to_app;
mount "/" => builder {
# only create session cookies for dancer application
enable "Session";
mount '/' => $dancer_app;
};
};
METHODS
- to_app
-
returns Plack application that can be mounted. Path rebasements are taken into account
AUTHOR
IMPORTANT
This module is still a work in progress, and needs further testing before using it in a production system
LICENSE AND COPYRIGHT
This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.
See http://dev.perl.org/licenses/ for more information.