Bugzilla – Attachment 62248 Details for
Bug 17602
Integrate support for RecordedBooks (formerly OneClickDigital) API
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 17602 Add OneClickDigital Integration to Koha
Bug-17602-Add-OneClickDigital-Integration-to-Koha.patch (text/plain), 7.02 KB, created by
Srdjan Jankovic
on 2017-04-18 02:45:11 UTC
(
hide
)
Description:
Bug 17602 Add OneClickDigital Integration to Koha
Filename:
MIME Type:
Creator:
Srdjan Jankovic
Created:
2017-04-18 02:45:11 UTC
Size:
7.02 KB
patch
obsolete
>From 7368bf2b7314de0fe1b83d02fd6808b7f1d830ea Mon Sep 17 00:00:00 2001 >From: Srdjan <srdjan@catalyst.net.nz> >Date: Fri, 23 Sep 2016 18:08:30 +1200 >Subject: [PATCH] Bug 17602 Add OneClickDigital Integration to Koha > >Koha::ExternalContent::OneClickDigital - a wrapper around >WebService::ILS::OneClickDigital::PartnerPatron > >Nothing functional to test with this patch yet. >But you can run the tests that come with it > > t/db_dependent/Koha_ExternalContent_OneClickDigital.t >--- > C4/Installer/PerlDependencies.pm | 2 +- > Koha/ExternalContent/OneClickDigital.pm | 99 ++++++++++++++++++++++ > .../Koha_ExternalContent_OneClickDigital.t | 55 ++++++++++++ > 3 files changed, 155 insertions(+), 1 deletion(-) > create mode 100644 Koha/ExternalContent/OneClickDigital.pm > create mode 100755 t/db_dependent/Koha_ExternalContent_OneClickDigital.t > >diff --git a/C4/Installer/PerlDependencies.pm b/C4/Installer/PerlDependencies.pm >index a9e0ba9..24b33c9 100644 >--- a/C4/Installer/PerlDependencies.pm >+++ b/C4/Installer/PerlDependencies.pm >@@ -860,7 +860,7 @@ our $PERL_DEPS = { > 'WebService::ILS' => { > 'usage' => 'Interface third party systems', > 'required' => '0', >- 'min_ver' => '0.07', >+ 'min_ver' => '0.10', > }, > }; > >diff --git a/Koha/ExternalContent/OneClickDigital.pm b/Koha/ExternalContent/OneClickDigital.pm >new file mode 100644 >index 0000000..22ec799 >--- /dev/null >+++ b/Koha/ExternalContent/OneClickDigital.pm >@@ -0,0 +1,99 @@ >+# Copyright 2016 Catalyst >+# >+# 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. >+ >+package Koha::ExternalContent::OneClickDigital; >+ >+use Modern::Perl; >+use Carp; >+ >+use base qw(Koha::ExternalContent); >+use WebService::ILS::OneClickDigital::PartnerPatron; >+use WebService::ILS::OneClickDigital::Partner; >+use C4::Context; >+use Koha::Logger; >+ >+use constant logger => Koha::Logger->get(); >+ >+=head1 NAME >+ >+Koha::ExternalContent::OneClickDigital >+ >+=head1 SYNOPSIS >+ >+ use Koha::ExternalContent::OneClickDigital; >+ my $od_client = Koha::ExternalContent::OneClickDigital->new(); >+ my $od_auth_url = $od_client->auth_url(); >+ >+=head1 DESCRIPTION >+ >+A (very) thin wrapper around C<WebService::ILS::OneClickDigital::Patron> >+ >+Takes "OneClickDigital*" Koha preferences >+ >+=cut >+ >+sub new { >+ my $class = shift; >+ my $params = shift || {}; >+ >+ my $self = $class->SUPER::new($params); >+ unless ($params->{client}) { >+ my $client_secret = C4::Context->preference('OneClickDigitalClientSecret') >+ or croak("OneClickDigitalClientSecret pref not set"); >+ my $library_id = C4::Context->preference('OneClickDigitalLibraryID') >+ or croak("OneClickDigitalLibraryID pref not set"); >+ my $domain = C4::Context->preference('OneClickDigitalDomain'); >+ my $patron = $params->{koha_session_id} ? $self->koha_patron : undef; >+ my $client = $patron >+ ? WebService::ILS::OneClickDigital::PartnerPatron->new( >+ client_secret => $client_secret, >+ library_id => $library_id, >+ $domain && $domain gt '' ? (domain => $domain) : (), >+ user_id => $patron->email, >+ user_agent_params => { agent => $class->agent_string } >+ ) >+ : WebService::ILS::OneClickDigital::Partner->new( >+ client_secret => $client_secret, >+ library_id => $library_id, >+ $domain && $domain gt '' ? (domain => $domain) : (), >+ ); >+ $self->client( $client ); >+ } >+ return $self; >+} >+ >+=head1 METHODS >+ >+L<WebService::ILS::OneClickDigital::PartnerPatron> methods used without mods: >+ >+=over 4 >+ >+=item C<error_message()> >+ >+=back >+ >+=cut >+ >+use vars qw{$AUTOLOAD}; >+sub AUTOLOAD { >+ my $self = shift; >+ (my $method = $AUTOLOAD) =~ s/.*:://; >+ return $self->client->$method(@_); >+} >+sub DESTROY { } >+ >+1; >diff --git a/t/db_dependent/Koha_ExternalContent_OneClickDigital.t b/t/db_dependent/Koha_ExternalContent_OneClickDigital.t >new file mode 100755 >index 0000000..bff841b >--- /dev/null >+++ b/t/db_dependent/Koha_ExternalContent_OneClickDigital.t >@@ -0,0 +1,55 @@ >+use Modern::Perl; >+ >+use t::lib::Mocks; >+use t::lib::TestBuilder; >+use Test::More tests => 3; # last test to print >+use C4::Auth; >+use Koha::Database; >+ >+use Module::Load::Conditional qw( can_load ); >+SKIP: { >+ skip "cannot filnd WebService::ILS::OneClickDigital::PartnerPatron", 3 >+ unless can_load( modules => {'WebService::ILS::OneClickDigital::PartnerPatron' => undef} ); >+ >+ use_ok('Koha::ExternalContent::OneClickDigital'); >+ >+ my $ocd_user_email = $ENV{ONECLICKDIGITAL_TEST_USER_EMAIL}; >+ SKIP: { >+ skip "Env ONECLICKDIGITAL_TEST_USER_EMAIL not set", 2 unless $ocd_user_email; >+ >+ my $ocd_secret = $ENV{ONECLICKDIGITAL_TEST_CLIENT_SECRET} >+ || C4::Context->preference('OneClickDigitalClientSecret'); >+ my $ocd_library_id = $ENV{ONECLICKDIGITAL_TEST_LIBRARY_ID} >+ || C4::Context->preference('OneClickDigitalLibraryID'); >+ my $ocd_domain = $ENV{ONECLICKDIGITAL_TEST_DOMAIN} >+ || C4::Context->preference('OneClickDigitalDomain'); >+ skip "Env ONECLICKDIGITAL_TEST_CLIENT_SECRET ONECLICKDIGITAL_TEST_LIBRARY_ID ONECLICKDIGITAL_TEST_DOMAIN not set", 2 >+ unless $ocd_secret && $ocd_library_id && $ocd_domain; >+ >+ my $schema = Koha::Database->schema; >+ $schema->storage->txn_begin; >+ my $builder = t::lib::TestBuilder->new(); >+ >+ t::lib::Mocks::mock_preference('OneClickDigitalClientSecret', $ocd_secret); >+ t::lib::Mocks::mock_preference('OneClickDigitalLibraryID', $ocd_library_id); >+ t::lib::Mocks::mock_preference('OneClickDigitalDomain', $ocd_domain); >+ >+ my $patron = $builder->build({ >+ source => 'Borrower', >+ value => { >+ email => $ocd_user_email, >+ } >+ }); >+ >+ my $session = C4::Auth::get_session(""); >+ $session->param('number', $patron->{borrowernumber}); >+ $session->flush; >+ my $client = Koha::ExternalContent::OneClickDigital->new({koha_session_id => $session->id}); >+ >+ my $user_agent_string = $client->user_agent->agent(); >+ ok ($user_agent_string =~ m/^Koha/, 'User Agent string is set') >+ or diag("User Agent string: $user_agent_string"); >+ >+ ok ($client->search({query => "school"}), 'search()'); >+ } >+} >-- >2.7.4
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 17602
:
57402
|
57403
|
57404
|
60855
|
60856
|
60857
|
61866
|
61932
|
62247
|
62248
|
62249
|
62250
|
63392
|
63778
|
63779
|
63780
|
63857
|
64070
|
64071
|
64095
|
64096
|
64098
|
64099
|
64100
|
65988
|
65989
|
66341
|
66342
|
66343
|
67236
|
67237
|
67238
|
67240
|
67859
|
67860
|
69019
|
69020
|
69021
|
69022
|
69023
|
69024
|
69025
|
69026
|
69027
|
69101
|
69357
|
69358
|
69359
|
73708
|
73709
|
73710
|
73711
|
73712
|
73713
|
73714
|
73715
|
73716
|
73717
|
73718
|
73719
|
73725
|
76180
|
76181
|
76182
|
76183
|
76184
|
76185
|
76186
|
76187
|
76188
|
76189
|
76190
|
76191
|
76192
|
76193
|
78602
|
78603
|
78604
|
78605
|
78606
|
78607
|
78608
|
78609
|
78610
|
78611
|
78612
|
78613
|
78614
|
78615
|
79247
|
79668
|
79669
|
79670
|
79671
|
79672
|
79673
|
79674
|
79675
|
79676
|
79677
|
79678
|
79679
|
79680
|
79681
|
79682
|
79752