Skip to content
This repository has been archived by the owner on Jan 26, 2021. It is now read-only.

Commit

Permalink
Pass through errors from Primo WS to the json output
Browse files Browse the repository at this point in the history
  • Loading branch information
kloevschall committed Oct 15, 2015
1 parent a140642 commit 3493ba0
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 21 deletions.
3 changes: 1 addition & 2 deletions lib/PrimoServices/Dispatcher.pm
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ my $uid = $ENV{LOGNAME} || $ENV{USER} || getpwuid($<);
my $cache = CHI->new(
namespace => __PACKAGE__,
driver => config->{caching}{chi_driver},
#driver => 'Null',
root_dir => config->{caching}{chi_root_dir} . '_' . $uid,
depth => config->{caching}{chi_depth},
expires_in => config->{caching}{default_expires_in},
Expand Down Expand Up @@ -208,7 +207,7 @@ sub request_webservices {
if ( $id =~ m {
# Primo Central records are prefixed by 'TN_'
^TN_}sxm ) {
push @items, { id => $id, primoStatus => 'Not a local record' };
push @items, { id => $id, primoStatus => 'Not a local record', error=> '0' };
next;
}

Expand Down
46 changes: 27 additions & 19 deletions lib/PrimoServices/Parsers.pm
Original file line number Diff line number Diff line change
Expand Up @@ -40,25 +40,32 @@ sub parse_record {
$json = JSON::XS->new->utf8->decode($$content_ref);

$values{id} = $id;
$values{primoStatus} = 'OK';

$values{metadata}{isbn} = get_as_scalar($json->{SEGMENTS}{JAGROOT}{RESULT}{DOCSET}{DOC}{PrimoNMBib}{record}{addata}{isbn});
$values{metadata}{'@isbn'} = get_as_array($json->{SEGMENTS}{JAGROOT}{RESULT}{DOCSET}{DOC}{PrimoNMBib}{record}{addata}{isbn});
$values{metadata}{issn} = get_as_scalar($json->{SEGMENTS}{JAGROOT}{RESULT}{DOCSET}{DOC}{PrimoNMBib}{record}{addata}{issn});
$values{metadata}{'@issn'} = get_as_array($json->{SEGMENTS}{JAGROOT}{RESULT}{DOCSET}{DOC}{PrimoNMBib}{record}{addata}{issn});

$values{delcategory} = get_as_array($json->{SEGMENTS}{JAGROOT}{RESULT}{DOCSET}{DOC}{PrimoNMBib}{record}{delivery}{delcategory});
@{$values{delcategory}} = List::MoreUtils::apply { s/(^\$\$V|\$\$O.*$)//g } @{$values{delcategory}} if @{$values{delcategory}}[0];
@{$values{delcategory}} = List::MoreUtils::uniq @{$values{delcategory}} if @{$values{delcategory}}[1];

$values{type} = $json->{SEGMENTS}{JAGROOT}{RESULT}{DOCSET}{DOC}{PrimoNMBib}{record}{display}{type};
$values{availability} = $json->{SEGMENTS}{JAGROOT}{RESULT}{DOCSET}{DOC}{LIBRARIES};
$values{metadata}{date} = get_as_scalar($json->{SEGMENTS}{JAGROOT}{RESULT}{DOCSET}{DOC}{PrimoNMBib}{record}{addata}{date});
$values{metadata}{volume} = get_as_scalar($json->{SEGMENTS}{JAGROOT}{RESULT}{DOCSET}{DOC}{PrimoNMBib}{record}{addata}{volume});
$values{metadata}{issue} = get_as_scalar($json->{SEGMENTS}{JAGROOT}{RESULT}{DOCSET}{DOC}{PrimoNMBib}{record}{addata}{issue});
$values{metadata}{issue} = get_as_scalar($json->{SEGMENTS}{JAGROOT}{RESULT}{DOCSET}{DOC}{PrimoNMBib}{record}{addata}{spage});

$values{metadata}{atitle} = get_as_scalar($json->{SEGMENTS}{JAGROOT}{RESULT}{DOCSET}{DOC}{PrimoNMBib}{record}{addata}{atitle});
if ( $json->{SEGMENTS}{JAGROOT}{RESULT}{ERROR}{'@MESSAGE'} ) {
$values{primoStatus} = get_as_scalar($json->{SEGMENTS}{JAGROOT}{RESULT}{ERROR}{'@MESSAGE'});
$values{error} = get_as_scalar($json->{SEGMENTS}{JAGROOT}{RESULT}{ERROR}{'@CODE'});
}
else {
$values{primoStatus} = 'OK';

$values{metadata}{isbn} = get_as_scalar($json->{SEGMENTS}{JAGROOT}{RESULT}{DOCSET}{DOC}{PrimoNMBib}{record}{addata}{isbn});
$values{metadata}{'@isbn'} = get_as_array($json->{SEGMENTS}{JAGROOT}{RESULT}{DOCSET}{DOC}{PrimoNMBib}{record}{addata}{isbn});
$values{metadata}{issn} = get_as_scalar($json->{SEGMENTS}{JAGROOT}{RESULT}{DOCSET}{DOC}{PrimoNMBib}{record}{addata}{issn});
$values{metadata}{'@issn'} = get_as_array($json->{SEGMENTS}{JAGROOT}{RESULT}{DOCSET}{DOC}{PrimoNMBib}{record}{addata}{issn});

$values{delcategory} = get_as_array($json->{SEGMENTS}{JAGROOT}{RESULT}{DOCSET}{DOC}{PrimoNMBib}{record}{delivery}{delcategory});
@{$values{delcategory}} = List::MoreUtils::apply { s/(^\$\$V|\$\$O.*$)//g } @{$values{delcategory}} if @{$values{delcategory}}[0];
@{$values{delcategory}} = List::MoreUtils::uniq @{$values{delcategory}} if @{$values{delcategory}}[1];

$values{type} = $json->{SEGMENTS}{JAGROOT}{RESULT}{DOCSET}{DOC}{PrimoNMBib}{record}{display}{type};
$values{availability} = $json->{SEGMENTS}{JAGROOT}{RESULT}{DOCSET}{DOC}{LIBRARIES};
$values{metadata}{date} = get_as_scalar($json->{SEGMENTS}{JAGROOT}{RESULT}{DOCSET}{DOC}{PrimoNMBib}{record}{addata}{date});
$values{metadata}{volume} = get_as_scalar($json->{SEGMENTS}{JAGROOT}{RESULT}{DOCSET}{DOC}{PrimoNMBib}{record}{addata}{volume});
$values{metadata}{issue} = get_as_scalar($json->{SEGMENTS}{JAGROOT}{RESULT}{DOCSET}{DOC}{PrimoNMBib}{record}{addata}{issue});
$values{metadata}{issue} = get_as_scalar($json->{SEGMENTS}{JAGROOT}{RESULT}{DOCSET}{DOC}{PrimoNMBib}{record}{addata}{spage});

$values{metadata}{atitle} = get_as_scalar($json->{SEGMENTS}{JAGROOT}{RESULT}{DOCSET}{DOC}{PrimoNMBib}{record}{addata}{atitle});
}
}
catch {
# JSON was malformed so we cannot tell the number of hits
Expand Down Expand Up @@ -248,7 +255,8 @@ sub parse_rsi {
}sxmi ) {

# Get SFX Object ID
my $sfx_object_id = $1 if ( $$content_ref =~ m{
my $sfx_object_id;
$sfx_object_id = $1 if ( $$content_ref =~ m{
<OBJECT_ID>(\d+?)</OBJECT_ID>
}sxmi );

Expand Down

0 comments on commit 3493ba0

Please sign in to comment.