From 7647c853679d4ed7f6afdbab3845021de24d20e5 Mon Sep 17 00:00:00 2001 From: David Cook Date: Tue, 23 May 2017 12:06:59 +1000 Subject: [PATCH] Bug 18586 - Create module to mint RDF subject URIs Created the Koha::RDF module to mint URIs for RDF documents that represent Koha bibliographic records. _TEST PLAN_ To test the module, just run 'prove t/Koha/RDF.t'. You'll get some warnings about not being able to find koha-conf.xml, but you can safely ignore them or you can point to any koha-conf.xml file since it's not used by the test in actuality. Signed-off-by: Magnus Enger Works as expected. No warnings when run like: sudo koha-shell -c "prove t/Koha/RDF.t" kohadev --- Koha/RDF.pm | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ t/Koha/RDF.t | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 83 insertions(+) create mode 100644 Koha/RDF.pm create mode 100644 t/Koha/RDF.t diff --git a/Koha/RDF.pm b/Koha/RDF.pm new file mode 100644 index 0000000..def6dfd --- /dev/null +++ b/Koha/RDF.pm @@ -0,0 +1,50 @@ +package Koha::RDF; + +# Copyright 2017 Prosentient Systems +# +# This file is part of Koha. +# +# Koha is free software; you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the Free Software +# Foundation; either version 3 of the License, or (at your option) any later +# version. +# +# Koha is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with Koha; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +use Modern::Perl; +use URI; + +use C4::Context; + +sub new { + my ($class, $args) = @_; + $args = {} unless defined $args; + return bless ($args, $class); +} + +sub mint_uri { + my ($self,$type,$number) = @_; + my $new_uri; + my $preference = C4::Context->preference('OPACBaseURL'); + if ($preference){ + my $uri = URI->new($preference); + if ( $uri && $uri->can('scheme') && $uri->scheme && ($uri->scheme eq 'http' || $uri->scheme eq 'https') ){ + if ($type && $number){ + if ($type eq 'biblio'){ + #NOTE: This is arbitrary and based on default Apache configuration at the time of writing this module + $uri->path("bib/$number"); + $new_uri = $uri; + } + } + } + } + return $new_uri; +} + +1; diff --git a/t/Koha/RDF.t b/t/Koha/RDF.t new file mode 100644 index 0000000..9c164fc --- /dev/null +++ b/t/Koha/RDF.t @@ -0,0 +1,33 @@ +#!/usr/bin/perl + +# This file is part of Koha. +# +# Koha is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# Koha is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Koha; if not, see . + +use Modern::Perl; +use Test::More tests => 3; + +use t::lib::Mocks; + +use_ok("Koha::RDF"); + +my $rdf = Koha::RDF->new; + +t::lib::Mocks::mock_preference('OPACBaseURL', 'http://koha-community.org'); +my $well_formed_uri = $rdf->mint_uri('biblio',1); +is($well_formed_uri,'http://koha-community.org/bib/1','Successfully minted a RDF URI'); + +t::lib::Mocks::mock_preference('OPACBaseURL', 'koha-community.org'); +my $malformed_uri = $rdf->mint_uri('biblio',2); +is($malformed_uri,undef,"Didn't mint URI due to missing URI scheme"); -- 2.1.4