Skip to content

Latest commit

 

History

History
159 lines (101 loc) · 4.99 KB

README.md

File metadata and controls

159 lines (101 loc) · 4.99 KB

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 in record_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 and start 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

  • Nicolas Franck, <nicolas.franck at ugent.be>

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.