package C4::External::BakerTaylor;
+
# Copyright (C) 2008 LibLime
# <jmf at liblime dot com>
#
# 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 2 of the License, or (at your option) any later
-# version.
+# 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.
+# 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.
+# You should have received a copy of the GNU General Public License
+# along with Koha; if not, see <http://www.gnu.org/licenses>.
use XML::Simple;
-use LWP::Simple;
-# use LWP::UserAgent;
-use HTTP::Request::Common;
+use LWP::Simple qw( get );
+
use C4::Context;
-use C4::Debug;
-use strict;
-use warnings;
+use Modern::Perl;
-use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
-use vars qw($user $pass $agent $image_url $link_url);
+use vars qw(%EXPORT_TAGS $VERSION);
+our (@ISA, @EXPORT_OK);
BEGIN {
- require Exporter;
+ require Exporter;
+ @ISA = qw(Exporter);
$VERSION = 3.07.00.049;
- @ISA = qw(Exporter);
- @EXPORT_OK = qw(&availability &content_cafe &image_url &link_url &http_jacket_link);
- %EXPORT_TAGS = (all=>\@EXPORT_OK);
-}
-INIT {
- &initialize;
+ @EXPORT_OK = qw(availability content_cafe_url image_url link_url http_jacket_link);
}
-sub initialize {
+# These variables are plack safe: they are initialized each time
+my ( $user, $pass, $agent, $image_url, $link_url );
+
+sub _initialize {
$user = (@_ ? shift : C4::Context->preference('BakerTaylorUsername') ) || ''; # LL17984
$pass = (@_ ? shift : C4::Context->preference('BakerTaylorPassword') ) || ''; # CC82349
$link_url = (@_ ? shift : C4::Context->preference('BakerTaylorBookstoreURL'));
- $image_url = "http://contentcafe2.btol.com/ContentCafe/Jacket.aspx?UserID=$user&Password=$pass&Options=Y&Return=T&Type=S&Value=";
+ $image_url = "https://contentcafe2.btol.com/ContentCafe/Jacket.aspx?UserID=$user&Password=$pass&Options=Y&Return=T&Type=S&Value=";
$agent = "Koha/$VERSION [en] (Linux)";
#"Mozilla/4.76 [en] (Win98; U)", # if for some reason you want to go stealth, you might prefer this
}
-sub image_url (;$) {
- ($user and $pass) or return undef;
+sub image_url {
+ _initialize();
+ ($user and $pass) or return;
my $isbn = (@_ ? shift : '');
$isbn =~ s/(p|-)//g; # sanitize
return $image_url . $isbn;
}
-sub link_url (;$) {
+
+sub link_url {
+ _initialize();
my $isbn = (@_ ? shift : '');
$isbn =~ s/(p|-)//g; # sanitize
- $link_url or return undef;
+ $link_url or return;
return $link_url . $isbn;
}
-sub content_cafe_url ($) {
- ($user and $pass) or return undef;
+
+sub content_cafe_url {
+ _initialize();
+ ($user and $pass) or return;
my $isbn = (@_ ? shift : '');
$isbn =~ s/(p|-)//g; # sanitize
- return "http://contentcafe2.btol.com/ContentCafeClient/ContentCafe.aspx?UserID=$user&Password=$pass&Options=Y&ItemKey=$isbn";
+ return "https://contentcafe2.btol.com/ContentCafeClient/ContentCafe.aspx?UserID=$user&Password=$pass&Options=Y&ItemKey=$isbn";
}
-sub http_jacket_link ($) {
- my $isbn = shift or return undef;
+
+sub http_jacket_link {
+ _initialize();
+ my $isbn = shift or return;
$isbn =~ s/(p|-)//g; # sanitize
my $image = availability($isbn);
my $alt = "Buy this book";
return sprintf qq(<a class="btlink" href="%s">%s</a>),$link,($image||$alt);
}
-sub availability ($) {
- my $isbn = shift or return undef;
- ($user and $pass) or return undef;
+sub availability {
+ _initialize();
+ my $isbn = shift or return;
+ ($user and $pass) or return;
$isbn =~ s/(p|-)//g; # sanitize
- my $url = "http://contentcafe2.btol.com/ContentCafe/InventoryAvailability.asmx/CheckInventory?UserID=$user&Password=$pass&Value=$isbn";
- $debug and warn __PACKAGE__ . " request:\n$url\n";
+ my $url = "https://contentcafe2.btol.com/ContentCafe/InventoryAvailability.asmx/CheckInventory?UserID=$user&Password=$pass&Value=$isbn";
my $content = get($url);
- $debug and print STDERR $content, "\n";
warn "could not retrieve $url" unless $content;
my $xmlsimple = XML::Simple->new();
my $result = $xmlsimple->XMLin($content);
=head1 SEE ALSO
-C4::External::Amazon
LWP::UserAgent
=head1 AUTHOR