From e0af9b3603e9a02836621cf886084841c23c16af Mon Sep 17 00:00:00 2001 From: Galen Charlton Date: Fri, 24 Sep 2021 12:40:20 -0400 Subject: [PATCH] LP#1729620: (follow-up) move OAI methods to open-ils.supercat A new service isn't really necessary for the handful of methods that OAI support needs. Since SuperCat is where other record harvesting and export methods live, what was open-ils.oai is moved to SuperCat via this patch. Signed-off-by: Galen Charlton Signed-off-by: Mike Rylander --- Open-ILS/examples/opensrf.xml.example | 209 ++++++++++----------- Open-ILS/examples/opensrf_core.xml.example | 1 - .../perlmods/lib/OpenILS/Application/SuperCat.pm | 4 + .../lib/OpenILS/Application/{ => SuperCat}/OAI.pm | 20 +- Open-ILS/src/perlmods/lib/OpenILS/WWW/OAI.pm | 14 +- .../OAI2/new_oai_opensrf_service.adoc | 36 +--- 6 files changed, 122 insertions(+), 162 deletions(-) rename Open-ILS/src/perlmods/lib/OpenILS/Application/{ => SuperCat}/OAI.pm (96%) diff --git a/Open-ILS/examples/opensrf.xml.example b/Open-ILS/examples/opensrf.xml.example index 7074a0d2a2..447dca31da 100644 --- a/Open-ILS/examples/opensrf.xml.example +++ b/Open-ILS/examples/opensrf.xml.example @@ -796,6 +796,101 @@ vim:et:ts=4:sw=4: 1 5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -991,118 +1086,6 @@ vim:et:ts=4:sw=4: - - 5 - 1 - perl - OpenILS::Application::OAI - 199 - - open-ils.oai_unix.sock - open-ils.oai_unix.pid - 1000 - open-ils.oai_unix.log - 1 - 5 - 1 - 2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 6 1 @@ -1477,13 +1460,11 @@ vim:et:ts=4:sw=4: open-ils.justintime open-ils.cstore open-ils.collections - open-ils.oai open-ils.qstore open-ils.reporter open-ils.reporter-store open-ils.permacrud - open-ils.oai open-ils.pcrud open-ils.trigger open-ils.url_verify diff --git a/Open-ILS/examples/opensrf_core.xml.example b/Open-ILS/examples/opensrf_core.xml.example index 1a09e9ee54..aeba4ad94c 100644 --- a/Open-ILS/examples/opensrf_core.xml.example +++ b/Open-ILS/examples/opensrf_core.xml.example @@ -30,7 +30,6 @@ Example OpenSRF bootstrap configuration file for Evergreen open-ils.courses open-ils.curbside open-ils.fielder - open-ils.oai open-ils.pcrud open-ils.permacrud open-ils.reporter diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application/SuperCat.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application/SuperCat.pm index edaa48cb6e..8aac6ab8bf 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Application/SuperCat.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/SuperCat.pm @@ -6,6 +6,8 @@ use Unicode::Normalize; # ... and this has some handy common methods use OpenILS::Application::AppUtils; +use OpenILS::Application::SuperCat::OAI; + my $parser = new XML::LibXML; my $U = 'OpenILS::Application::AppUtils'; @@ -182,6 +184,8 @@ sub child_init { register_new_authorities_methods(); + OpenILS::Application::SuperCat::OAI->child_init(); + return 1; } diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application/OAI.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application/SuperCat/OAI.pm similarity index 96% rename from Open-ILS/src/perlmods/lib/OpenILS/Application/OAI.pm rename to Open-ILS/src/perlmods/lib/OpenILS/Application/SuperCat/OAI.pm index 3605167274..8c6f8103c7 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Application/OAI.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/SuperCat/OAI.pm @@ -1,4 +1,4 @@ -# OpenILS::WWW::OAI manages OAI2 requests and responses. +# OpenILS::Application::SuperCat::OAI manages OAI2 requests and responses. # # Copyright (c) 2014-2017 International Institute of Social History # @@ -19,7 +19,7 @@ # Author: Lucien van Wouw -package OpenILS::Application::OAI; +package OpenILS::Application::SuperCat::OAI; use strict; use warnings; use base qw/OpenILS::Application/; @@ -54,7 +54,7 @@ sub child_init { $_xslt = new XML::LibXSLT; # Load the metadataformats that are configured. - my $metadata_format = OpenSRF::Utils::SettingsClient->new->config_value(apps => 'open-ils.oai')->{'app_settings'}->{'metadataformat'}; + my $metadata_format = OpenSRF::Utils::SettingsClient->new->config_value(apps => 'open-ils.supercat')->{'app_settings'}->{'oai'}->{'metadataformat'}; if ( $metadata_format ) { for my $schema ( keys %$metadata_format ) { $logger->info('Loading schema ' . $schema) ; @@ -98,7 +98,7 @@ sub child_init { } # Load the mapping of 852 holdings. - my $copies = OpenSRF::Utils::SettingsClient->new->config_value(apps => 'open-ils.oai')->{'app_settings'}->{'copies'} ; + my $copies = OpenSRF::Utils::SettingsClient->new->config_value(apps => 'open-ils.supercat')->{'app_settings'}->{'oai'}->{'copies'} ; if ( $copies ) { foreach my $subfield_code (keys %$copies) { my $value = $copies->{$subfield_code}; @@ -117,8 +117,8 @@ sub child_init { } # Set the barcode filter and status filter - $barcode_filter = OpenSRF::Utils::SettingsClient->new->config_value(apps => 'open-ils.oai')->{'app_settings'}->{'barcode_filter'}; - $status_filter = OpenSRF::Utils::SettingsClient->new->config_value(apps => 'open-ils.oai')->{'app_settings'}->{'status_filter'}; + $barcode_filter = OpenSRF::Utils::SettingsClient->new->config_value(apps => 'open-ils.supercat')->{'app_settings'}->{'oai'}->{'barcode_filter'}; + $status_filter = OpenSRF::Utils::SettingsClient->new->config_value(apps => 'open-ils.supercat')->{'app_settings'}->{'oai'}->{'status_filter'}; return 1; } @@ -142,7 +142,7 @@ sub list_record_formats { __PACKAGE__->register_method( method => 'list_record_formats', - api_name => 'open-ils.oai.record.formats', + api_name => 'open-ils.supercat.oai.record.formats', api_level => 1, argc => 0, signature => @@ -304,7 +304,7 @@ sub oai_biblio_retrieve { __PACKAGE__->register_method( method => 'oai_biblio_retrieve', - api_name => 'open-ils.oai.biblio.retrieve', + api_name => 'open-ils.supercat.oai.biblio.retrieve', api_level => 1, argc => 1, signature => @@ -401,7 +401,7 @@ sub oai_authority_retrieve { __PACKAGE__->register_method( method => 'oai_authority_retrieve', - api_name => 'open-ils.oai.authority.retrieve', + api_name => 'open-ils.supercat.oai.authority.retrieve', api_level => 1, argc => 1, signature => @@ -460,7 +460,7 @@ sub oai_list_retrieve { __PACKAGE__->register_method( method => 'oai_list_retrieve', - api_name => 'open-ils.oai.list.retrieve', + api_name => 'open-ils.supercat.oai.list.retrieve', api_level => 1, argc => 1, signature => diff --git a/Open-ILS/src/perlmods/lib/OpenILS/WWW/OAI.pm b/Open-ILS/src/perlmods/lib/OpenILS/WWW/OAI.pm index 0ca150c266..13961b3d33 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/WWW/OAI.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/WWW/OAI.pm @@ -71,11 +71,11 @@ sub child_init { my $idl = OpenSRF::Utils::SettingsClient->new->config_value('IDL'); Fieldmapper->import(IDL => $idl); - $oai = OpenSRF::AppSession->create('open-ils.oai'); + $oai = OpenSRF::AppSession->create('open-ils.supercat'); $parser = new XML::LibXML; $xslt = new XML::LibXSLT; - my $app_settings = OpenSRF::Utils::SettingsClient->new->config_value(apps => 'open-ils.oai')->{'app_settings'}; + my $app_settings = OpenSRF::Utils::SettingsClient->new->config_value(apps => 'open-ils.supercat')->{'app_settings'}->{'oai'}; $base_url = $app_settings->{'base_url'} || 'localhost'; $base_url =~/(.*)\/$/ ; # Keep all minus the trailing forward slash. $repository_identifier = $app_settings->{'repository_identifier'} || 'localhost'; @@ -284,7 +284,7 @@ sub getRecord { my $rec_id = $1 ; # Do we have a record ? - my $record = $oai->request('open-ils.oai.list.retrieve', $record_class, $rec_id, undef, undef, undef, 1, $deleted_record)->gather(1) ; + my $record = $oai->request('open-ils.supercat.oai.list.retrieve', $record_class, $rec_id, undef, undef, undef, 1, $deleted_record)->gather(1) ; if (@$record) { $response = HTTP::OAI::GetRecord->new(); my $o = "Fieldmapper::oai::$record_class"->new(@$record[0]); @@ -311,7 +311,7 @@ sub listIdentifiers { my ($record_class, $requestURL, $from, $until, $set, $metadataPrefix, $offset ) = @_; my $response; - my $r = $oai->request('open-ils.oai.list.retrieve', $record_class, $offset, $from, $until, $set, $max_count, $deleted_record)->gather(1) ; + my $r = $oai->request('open-ils.supercat.oai.list.retrieve', $record_class, $offset, $from, $until, $set, $max_count, $deleted_record)->gather(1) ; if (@$r) { my $cursor = 0 ; $response = HTTP::OAI::ListIdentifiers->new(); @@ -340,7 +340,7 @@ sub listRecords { my ($record_class, $requestURL, $from, $until, $set, $metadataPrefix, $offset ) = @_; my $response; - my $r = $oai->request('open-ils.oai.list.retrieve', $record_class, $offset, $from, $until, $set, $max_count, $deleted_record)->gather(1) ; + my $r = $oai->request('open-ils.supercat.oai.list.retrieve', $record_class, $offset, $from, $until, $set, $max_count, $deleted_record)->gather(1) ; if (@$r) { my $cursor = 0 ; $response = HTTP::OAI::ListRecords->new(); @@ -395,7 +395,7 @@ sub _record { if ( $o->deleted eq 'f' ) { my $md = new HTTP::OAI::Metadata() ; - my $xml = $oai->request('open-ils.oai.' . $record_class . '.retrieve', $o->rec_id, $metadataPrefix)->gather(1) ; + my $xml = $oai->request('open-ils.supercat.oai.' . $record_class . '.retrieve', $o->rec_id, $metadataPrefix)->gather(1) ; $md->dom( $parser->parse_string('' . $xml . '') ); # Not sure why I need to add the metadata element, $record->metadata( $md ); # because I expect ->metadata() would provide the wrapper for it. } @@ -464,7 +464,7 @@ sub _load_oaisets_biblio { # oai_metadataformats = { metadataPrefix => { schema, metadataNamespace } } sub _load_oai_metadataformats { - my $list = $oai->request('open-ils.oai.record.formats')->gather(1); + my $list = $oai->request('open-ils.supercat.oai.record.formats')->gather(1); for my $record_browse_format ( @$list ) { my %h = %$record_browse_format ; my $metadataPrefix = (keys %h)[0] ; diff --git a/docs/RELEASE_NOTES_NEXT/OAI2/new_oai_opensrf_service.adoc b/docs/RELEASE_NOTES_NEXT/OAI2/new_oai_opensrf_service.adoc index c03ddcb6c6..942afa5e4a 100644 --- a/docs/RELEASE_NOTES_NEXT/OAI2/new_oai_opensrf_service.adoc +++ b/docs/RELEASE_NOTES_NEXT/OAI2/new_oai_opensrf_service.adoc @@ -1,7 +1,8 @@ -New OAI Service -^^^^^^^^^^^^^^^ +OAI-PMH Data Provider Support +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -This module is an optional service that exposes your catalog through the [OAI2 protocol](http://www.openarchives.org/OAI/openarchivesprotocol.html). +Evergreen can now act as an OAI-PMH data provider, exposing the catalog to +harvesting through the [OAI2 protocol](http://www.openarchives.org/OAI/openarchivesprotocol.html). Entry points @@ -74,37 +75,12 @@ This mapping can be customized and extended with static subfields: Default configuration +++++++++++++++++++++ -See comments in opensrf.xml (in the open-ils.oai app_settings element) -for default configuration and customization instructions. is commented -in the open-ils.oai app_settings element. +See comments in opensrf.xml (in the open-ils.supercat app_settings/oai element) +for default configuration and customization instructions. Upgrade Instructions ++++++++++++++++++++ -**Activate the service** - -Refer to the service in the opensrf.xml activeapps element: -```xml -.... - - open-ils.oai -``` - -**Register the service with the router** - -Add the service to the public router in your opensrf_core.xml -```xml - - - - - router - public.realm - - open-ils.oai - ... -``` - Optional: Setting the datestamp +++++++++++++++++++++++++++++++ -- 2.11.0