$logger->info("EbookAPI: _start_session: New Session request received for $vendor.");
# determine EbookAPI handler from vendor name
- # TODO handle API versions?
if ($vendor_handlers{$vendor}) {
$module = $vendor_handlers{$vendor};
- $logger->debug("EbookAPI: _start_session: Module '$module' ");
+ $logger->info("EbookAPI: _start_session: Module '$module' ");
} else {
$logger->error("EbookAPI: No handler module found for $vendor!");
return;
# our "session" is actually just our handler object, serialized and cached
$cache->put_cache($handler->{session_id}, $handler, $cache_timeout);
- $logger->debug("EbookAPI: _start_session: New session created for '$vendor' : " .$handler->{session_id});
+ $logger->info("EbookAPI: _start_session: New session created for '$vendor' : " .$handler->{session_id});
return $handler->{session_id};
}
sub _get_patron_xacts {
my ($xact_type, $auth, $session_id, $barcode) = @_;
- $logger->info("EbookAPI: _get_patron_xacts: $xact_type for session_id: $session_id");
+ $logger->debug("EbookAPI: _get_patron_xacts: Requested $xact_type for session_id: $session_id ");
# verify that user is authenticated in EG
my $e = new_editor(authtoken => $auth);
}
# Check if there is cached object before making calls to an API
- $logger->info("EbookAPI: _get_patron_xacts: Calling cached session for ".$xact_type);
+ $logger->debug("EbookAPI: _get_patron_xacts: Calling cached session for $xact_type: ($session_id)");
my $xact_value = _get_cache_value($session_id, $xact_type);
if (defined($xact_value)) {
- $logger->info("EbookAPI: _get_patron_xacts: Returning cached session for $xact_type :". $xact_value);
+ $logger->debug("EbookAPI: _get_patron_xacts: Returning cached session for $xact_type: $xact_value ($session_id)");
return $xact_value;
}
+ $logger->debug("EbookAPI: _get_patron_xacts: No cached session found for $xact_type: (($handler)");
+
my $handler = new_handler($session_id, retrieve_session($session_id));
my $user_token = _get_user_token($handler, $e, $barcode);
$logger->error("EbookAPI: invalid transaction type '$xact_type'");
return;
}
+
+ $logger->debug("EbookAPI: _get_patron_xacts: Response received for $xact_type ($handler): ".Dumper($xacts));
if (defined($xacts)) {
# cache and return transaction details
} elsif ($self->api_name =~ /holds/) {
$xact_type = 'holds';
}
-
+ $logger->info("EbookAPI: get_patron_xacts request received to to get $xact_type for $session_id");
return _get_patron_xacts($xact_type, $auth, $session_id, $barcode);
}
# Load vendor tabs for authenticated patrons only
if (defined($self->editor->requestor)) {
my $session_id = "";
+
+ $session_id = _get_ebook_session_id($self->ctx->{authtoken}, $self->editor->requestor->home_ou);
+ $logger->debug("EbookAPI: load_rbdigital_common: Retrieved new session: $session_id");
+
# Get cached session based on authtoken that contains the ebook session id
- my $cached_session = $cache->get_cache($self->ctx->{authtoken}) || undef;
- $logger->debug("EbookAPI: load_rbdigital_common: Cached session retrieved: ".Dumper($cached_session));
- if ($cached_session) {
- $session_id = $cached_session;
- $logger->debug("EbookAPI: load_rbdigital_common: Retrieved cached session_id: $session_id");
- } else {
- $session_id = _get_ebook_session_id($session_id, $self->editor->requestor->home_ou);
- $logger->debug("EbookAPI: load_rbdigital_common: Retrieved new session: $session_id");
- # Save session id into cache
- $cache->put_cache($self->ctx->{authtoken}, $session_id, $cache_timeout);
- }
+ # my $cached_session = $cache->get_cache($self->ctx->{authtoken}) || undef;
+ # $logger->debug("EbookAPI: load_rbdigital_common: Cached session retrieved: ".Dumper($cached_session));
+ # if ($cached_session) {
+ # $session_id = $cached_session;
+ # $logger->debug("EbookAPI: load_rbdigital_common: Retrieved cached session_id: $session_id");
+ # } else {
+ # $session_id = _get_ebook_session_id($session_id, $self->editor->requestor->home_ou);
+ # $logger->debug("EbookAPI: load_rbdigital_common: Retrieved new session: $session_id");
+ # # Save session id into cache
+ # $cache->put_cache($self->ctx->{authtoken}, $session_id, $cache_timeout);
+ # }
# Assign session id to global variable so it can be saved to cookie as well.
$ebook_rbdigital_session_id = $session_id;
use OpenILS::Utils::CStoreEditor qw/:funcs/;
use OpenILS::Utils::Fieldmapper;
use OpenILS::Application::AppUtils;
+use OpenSRF::Utils::Cache;
use OpenSRF::Utils::JSON;
use Data::Dumper;
$Data::Dumper::Indent = 0;
use constant EBOOK_API_VENDOR => 'rbdigital';
use constant EBOOK_API_OU => 1;
+my $cache;
+my $cache_timeout;
+
# This method will load the admin area of the Advanced Search Tab Content
sub load_rbdigital_advanced {
my $self = shift;
$self->ctx->{search_filters} = {};
$logger->info('EbookAPI: RBDigitalSearch calling an API to get search filters');
-
- # Call sub to get the session id
- my $session_id = _get_ebook_session_id($self->cgi->cookie(COOKIE_EBOOK_RBDIGITAL),$self->editor->requestor->home_ou);
+
+ my $session_id = _get_ebook_session_id($self->ctx->{authtoken},$self->editor->requestor->home_ou);
my $ebook_api = OpenSRF::AppSession->create('open-ils.ebook_api');
my $api_request = $ebook_api->request('open-ils.ebook_api.get_search_filters', $self->editor->authtoken, $session_id);
$logger->info('EbookAPI: RBDigitalSearch calling an API to search fields for mapping with evergreen');
# Call sub to get the session id
- my $session_id = _get_ebook_session_id($self->cgi->cookie(COOKIE_EBOOK_RBDIGITAL),$self->editor->requestor->home_ou);
+ my $session_id = _get_ebook_session_id($self->ctx->{authtoken},$self->editor->requestor->home_ou);
my $ebook_api = OpenSRF::AppSession->create('open-ils.ebook_api');
my $api_request = $ebook_api->request('open-ils.ebook_api.get_search_filters', $self->editor->authtoken, $session_id);
my $e = $self->editor;
my $record_ids;
my $results;
- my $session_id;
my $is_eg_advanced_search = $cgi->param('_adv') || 0;
$logger->info('EbookAPI: RBDigitalSearch started');
$logger->info('EbookAPI: RBDigitalSearch User is authenticated.');
# Call sub to get the session id
- $session_id = _get_ebook_session_id($self->cgi->cookie(COOKIE_EBOOK_RBDIGITAL),$self->editor->requestor->home_ou);
+ my $session_id = _get_ebook_session_id($self->ctx->{authtoken},$self->editor->requestor->home_ou);
# Read all the parameters passed
my $auth_session = $cgi->cookie('ses') || $cgi->param('ses');
my $holds_req = $ebookapi_session->request('open-ils.ebook_api.patron.get_holds',$authtoken, $session_id, $barcode)->recv();
my %holds_ref;
-
+ $logger->info("EbookAPI: RBDigitalSearch Holds response 1: " . Dumper($holds_req));
+
if (defined($holds_req) && $holds_req->content ne '') {
$logger->info('EbookAPI: RBDigitalSearch Patron Holds API call was successful');
# Loop over the holds contents and build hash array for easier to use in the UI: { isbn => '1', ...}
my %checkouts_ref;
if (defined($checkouts_req) && $checkouts_req->content ne '') {
- $logger->info('EbookAPI: EbookAPI: RBDigitalSearch Patron Checkouts API call was successful');
+ $logger->info('EbookAPI: RBDigitalSearch Patron Checkouts API call was successful');
# Loop over the checkout contents and build hash array for easier to use in the UI: { isbn => '1', ...}
$logger->debug("EbookAPI: Checkout response: " . Dumper($checkouts_req->content));
foreach my $value (@{$checkouts_req->content}) {
}
sub _get_ebook_session_id {
- my ($session_id, $home_ou) = @_;
- $logger->info("EbookAPI: _get_ebook_session_id home library: $home_ou ");
-
- # Create an instance of EbookAPI
- my $ebook_api = OpenSRF::AppSession->create('open-ils.ebook_api');
- my $session_id_req = $ebook_api->request(
- 'open-ils.ebook_api.check_session', $session_id, EBOOK_API_VENDOR, $home_ou);
- $session_id = $session_id_req->recv->content;
+ my ($authtoken, $home_ou) = @_;
+ $logger->info("EbookAPI: _get_ebook_session_id home library: $home_ou ($authtoken)");
+ my $session_id;
+ # Call sub to get the session id
+ # Get cached session based on authtoken that contains the ebook session id
+ if (defined($authtoken) && $authtoken ne '') {
+ $cache = OpenSRF::Utils::Cache->new;
+ $session_id = $cache->get_cache($authtoken) || undef;
+ }
+
+ if ($session_id) {
+ $logger->info("EbookAPI: _get_ebook_session_id: Retrieved cached session_id: $session_id");
+ } else {
+ # Create an instance of EbookAPI
+ my $ebook_api = OpenSRF::AppSession->create('open-ils.ebook_api');
+ my $session_id_req = $ebook_api->request(
+ 'open-ils.ebook_api.check_session', $session_id, EBOOK_API_VENDOR, $home_ou);
+ $session_id = $session_id_req->recv->content;
+ $logger->info("EbookAPI: _get_ebook_session_id: Received new session_id: $session_id");
+
+
+ my $sclient = OpenSRF::Utils::SettingsClient->new();
+ $cache_timeout = $sclient->config_value("apps", "open-ils.ebook_api", "app_settings", "cache_timeout" ) || 300;
+ # Save session id into cache
+ $cache->put_cache($authtoken, $session_id, $cache_timeout);
+ }
return $session_id;
}