ILS-DI Messages uniformization
[MT2306_2271] ILS-DI Message codes consistence The services now returns ILSDI error codes in a <code> tag, plus details in a <message> tag. Exemple: <LookupPatron> <code>MissingParameter</code> <message>The required parameter patron_id is missing.</message> </LookupPatron> [MT2306_2271] Minor changes in HTML Signed-off-by: Galen Charlton <gmcharlt@gmail.com>
This commit is contained in:
parent
09221f7006
commit
f3581a594e
|
|
@ -170,7 +170,7 @@ sub GetRecords {
|
|||
|
||||
# Check if the schema is supported. For now, GetRecords only supports MARCXML
|
||||
if ( $cgi->param('schema') and $cgi->param('schema') ne "MARCXML" ) {
|
||||
return { message => 'UnsupportedSchema' };
|
||||
return { code => 'UnsupportedSchema' };
|
||||
}
|
||||
|
||||
my @records;
|
||||
|
|
@ -214,7 +214,17 @@ sub GetRecords {
|
|||
|
||||
map { $biblioitem->{$_} = encode_entities( $biblioitem->{$_}, '&' ) } grep( !/marcxml/, keys %$biblioitem );
|
||||
|
||||
<<<<<<< HEAD:C4/ILSDI/Services.pm
|
||||
push @records, $biblioitem;
|
||||
=======
|
||||
$_ = encode_entities( $$biblioitem{$_}, '&' ) for @$biblioitem{ grep {!/marcxml/} keys %$biblioitem };
|
||||
|
||||
push @records, $biblioitem;
|
||||
|
||||
} else {
|
||||
push @records, { code => 'RecordNotFound' };
|
||||
}
|
||||
>>>>>>> [MT2306_2271] ILS-DI Message codes consistence:C4/ILSDI.pm
|
||||
}
|
||||
|
||||
return { record => \@records };
|
||||
|
|
@ -241,7 +251,7 @@ sub GetAuthorityRecords {
|
|||
|
||||
# If the user asks for an unsupported schema, return an error code
|
||||
if ( $cgi->param('schema') and $cgi->param('schema') ne "MARCXML" ) {
|
||||
return { message => 'UnsupportedSchema' };
|
||||
return { code => 'UnsupportedSchema' };
|
||||
}
|
||||
|
||||
my $records;
|
||||
|
|
@ -250,8 +260,12 @@ sub GetAuthorityRecords {
|
|||
foreach my $authid ( split( / /, $cgi->param('id') ) ) {
|
||||
|
||||
# Get the record as XML string, or error code
|
||||
<<<<<<< HEAD:C4/ILSDI/Services.pm
|
||||
my $record = GetAuthorityXML($authid) || "<record>RecordNotFound</record>";
|
||||
$record =~ s/<\?xml version="1.0" encoding="UTF-8"\?>//go;
|
||||
=======
|
||||
my $record = GetAuthorityXML( $_ ) || "<record><code>RecordNotFound</code></record>";
|
||||
>>>>>>> [MT2306_2271] ILS-DI Message codes consistence:C4/ILSDI.pm
|
||||
$record =~ s/<\?xml(.*)\?>//go;
|
||||
$records .= $record;
|
||||
}
|
||||
|
||||
|
|
@ -279,6 +293,7 @@ sub LookupPatron {
|
|||
my ($cgi) = @_;
|
||||
|
||||
# Get the borrower...
|
||||
<<<<<<< HEAD:C4/ILSDI/Services.pm
|
||||
my $borrower = GetMember($cgi->param('id_type') => $cgi->param('id'));
|
||||
if ( not $borrower->{'borrowernumber'} ) {
|
||||
return { message => 'PatronNotFound' };
|
||||
|
|
@ -286,6 +301,10 @@ sub LookupPatron {
|
|||
|
||||
# Build the hashref
|
||||
my $patron->{'id'} = $borrower->{'borrowernumber'};
|
||||
=======
|
||||
my $borrower = GetMember( $cgi->param('id'), $cgi->param('id_type') );
|
||||
return { code => 'PatronNotFound' } unless $$borrower{borrowernumber};
|
||||
>>>>>>> [MT2306_2271] ILS-DI Message codes consistence:C4/ILSDI.pm
|
||||
|
||||
# ...and return his ID
|
||||
return $patron;
|
||||
|
|
@ -308,9 +327,15 @@ sub LookupPatron {
|
|||
sub AuthenticatePatron {
|
||||
my ($cgi) = @_;
|
||||
|
||||
<<<<<<< HEAD:C4/ILSDI/Services.pm
|
||||
# Check if borrower exists, using a C4::ILSDI::Utility function...
|
||||
if ( not( BorrowerExists( $cgi->param('username'), $cgi->param('password') ) ) ) {
|
||||
return { message => 'PatronNotFound' };
|
||||
=======
|
||||
# Check if borrower exists, using a C4::Auth function...
|
||||
unless( checkpw( C4::Context->dbh, $cgi->param('username'), $cgi->param('password') ) ) {
|
||||
return { code => 'PatronNotFound' };
|
||||
>>>>>>> [MT2306_2271] ILS-DI Message codes consistence:C4/ILSDI.pm
|
||||
}
|
||||
|
||||
# Get the borrower
|
||||
|
|
@ -349,10 +374,15 @@ sub GetPatronInfo {
|
|||
|
||||
# Get Member details
|
||||
my $borrowernumber = $cgi->param('patron_id');
|
||||
<<<<<<< HEAD:C4/ILSDI/Services.pm
|
||||
my $borrower = GetMemberDetails( $borrowernumber, undef );
|
||||
if ( not $borrower->{'borrowernumber'} ) {
|
||||
return { message => 'PatronNotFound' };
|
||||
}
|
||||
=======
|
||||
my $borrower = GetMemberDetails( $borrowernumber );
|
||||
return { code => 'PatronNotFound' } unless $$borrower{borrowernumber};
|
||||
>>>>>>> [MT2306_2271] ILS-DI Message codes consistence:C4/ILSDI.pm
|
||||
|
||||
# Cleaning the borrower hashref
|
||||
$borrower->{'charges'} = $borrower->{'flags'}->{'CHARGES'}->{'amount'};
|
||||
|
|
@ -436,6 +466,7 @@ sub GetPatronStatus {
|
|||
|
||||
# Get Member details
|
||||
my $borrowernumber = $cgi->param('patron_id');
|
||||
<<<<<<< HEAD:C4/ILSDI/Services.pm
|
||||
my $borrower = GetMemberDetails( $borrowernumber, undef );
|
||||
if ( not $borrower->{'borrowernumber'} ) {
|
||||
return { message => 'PatronNotFound' };
|
||||
|
|
@ -448,6 +479,17 @@ sub GetPatronStatus {
|
|||
$patron->{'expiry'} = $borrower->{'dateexpiry'};
|
||||
|
||||
return $patron;
|
||||
=======
|
||||
my $borrower = GetMemberDetails( $borrowernumber );
|
||||
return { code => 'PatronNotFound' } unless $$borrower{borrowernumber};
|
||||
|
||||
# Return the results
|
||||
return {
|
||||
type => $$borrower{categorycode},
|
||||
status => 0, # TODO
|
||||
expiry => $$borrower{dateexpiry},
|
||||
};
|
||||
>>>>>>> [MT2306_2271] ILS-DI Message codes consistence:C4/ILSDI.pm
|
||||
}
|
||||
|
||||
=head2 GetServices
|
||||
|
|
@ -468,6 +510,7 @@ sub GetServices {
|
|||
|
||||
# Get the member, or return an error code if not found
|
||||
my $borrowernumber = $cgi->param('patron_id');
|
||||
<<<<<<< HEAD:C4/ILSDI/Services.pm
|
||||
my $borrower = GetMemberDetails( $borrowernumber, undef );
|
||||
if ( not $borrower->{'borrowernumber'} ) {
|
||||
return { message => 'PatronNotFound' };
|
||||
|
|
@ -479,6 +522,15 @@ sub GetServices {
|
|||
if ( not $item->{'itemnumber'} ) {
|
||||
return { message => 'RecordNotFound' };
|
||||
}
|
||||
=======
|
||||
my $borrower = GetMemberDetails( $borrowernumber );
|
||||
return { code => 'PatronNotFound' } unless $$borrower{borrowernumber};
|
||||
|
||||
# Get the item, or return an error code if not found
|
||||
my $itemnumber = $cgi->param('item_id');
|
||||
my $item = GetItem( $itemnumber );
|
||||
return { code => 'RecordNotFound' } unless $$item{itemnumber};
|
||||
>>>>>>> [MT2306_2271] ILS-DI Message codes consistence:C4/ILSDI.pm
|
||||
|
||||
my @availablefor;
|
||||
|
||||
|
|
@ -544,17 +596,27 @@ sub RenewLoan {
|
|||
|
||||
# Get borrower infos or return an error code
|
||||
my $borrowernumber = $cgi->param('patron_id');
|
||||
<<<<<<< HEAD:C4/ILSDI/Services.pm
|
||||
my $borrower = GetMemberDetails( $borrowernumber, undef );
|
||||
if ( not $borrower->{'borrowernumber'} ) {
|
||||
return { message => 'PatronNotFound' };
|
||||
}
|
||||
=======
|
||||
my $borrower = GetMemberDetails( $borrowernumber );
|
||||
return { code => 'PatronNotFound' } unless $$borrower{borrowernumber};
|
||||
>>>>>>> [MT2306_2271] ILS-DI Message codes consistence:C4/ILSDI.pm
|
||||
|
||||
# Get the item, or return an error code
|
||||
my $itemnumber = $cgi->param('item_id');
|
||||
<<<<<<< HEAD:C4/ILSDI/Services.pm
|
||||
my $item = GetItem( $itemnumber, undef, undef );
|
||||
if ( not $item->{'itemnumber'} ) {
|
||||
return { message => 'RecordNotFound' };
|
||||
}
|
||||
=======
|
||||
my $item = GetItem( $itemnumber );
|
||||
return { code => 'RecordNotFound' } unless $$item{itemnumber};
|
||||
>>>>>>> [MT2306_2271] ILS-DI Message codes consistence:C4/ILSDI.pm
|
||||
|
||||
# Add renewal if possible
|
||||
my @renewal = CanBookBeRenewed( $borrowernumber, $itemnumber );
|
||||
|
|
@ -598,6 +660,7 @@ sub HoldTitle {
|
|||
|
||||
# Get the borrower or return an error code
|
||||
my $borrowernumber = $cgi->param('patron_id');
|
||||
<<<<<<< HEAD:C4/ILSDI/Services.pm
|
||||
my $borrower = GetMemberDetails( $borrowernumber, undef );
|
||||
if ( not $borrower->{'borrowernumber'} ) {
|
||||
return { message => 'PatronNotFound' };
|
||||
|
|
@ -616,18 +679,39 @@ sub HoldTitle {
|
|||
if ( not $canbereserved ) {
|
||||
return { message => 'NotHoldable' };
|
||||
}
|
||||
=======
|
||||
my $borrower = GetMemberDetails( $borrowernumber );
|
||||
return { code => 'PatronNotFound' } unless $$borrower{borrowernumber};
|
||||
|
||||
# Get the biblio record, or return an error code
|
||||
my $biblionumber = $cgi->param('bib_id');
|
||||
my ( $count, $biblio ) = GetBiblio( $biblionumber );
|
||||
return { code => 'RecordNotFound' } unless $$biblio{biblionumber};
|
||||
|
||||
my $title = $$biblio{title};
|
||||
|
||||
# Check if the biblio can be reserved
|
||||
return { code => 'NotHoldable' } unless CanBookBeReserved( $borrowernumber, $biblionumber );
|
||||
>>>>>>> [MT2306_2271] ILS-DI Message codes consistence:C4/ILSDI.pm
|
||||
|
||||
my $branch;
|
||||
|
||||
# Pickup branch management
|
||||
if ( $cgi->param('pickup_location') ) {
|
||||
$branch = $cgi->param('pickup_location');
|
||||
<<<<<<< HEAD:C4/ILSDI/Services.pm
|
||||
my $branches = GetBranches();
|
||||
if ( not $branches->{$branch} ) {
|
||||
return { message => 'LocationNotFound' };
|
||||
}
|
||||
} else { # if user provide no branch, use his own
|
||||
$branch = $borrower->{'branchcode'};
|
||||
=======
|
||||
my $branches = GetBranches;
|
||||
return { code => 'LocationNotFound' } unless $$branches{$branch};
|
||||
} else { # if the request provide no branch, use the borrower's branch
|
||||
$branch = $$borrower{branchcode};
|
||||
>>>>>>> [MT2306_2271] ILS-DI Message codes consistence:C4/ILSDI.pm
|
||||
}
|
||||
|
||||
# Add the reserve
|
||||
|
|
@ -671,14 +755,20 @@ sub HoldItem {
|
|||
|
||||
# Get the borrower or return an error code
|
||||
my $borrowernumber = $cgi->param('patron_id');
|
||||
<<<<<<< HEAD:C4/ILSDI/Services.pm
|
||||
my $borrower = GetMemberDetails( $borrowernumber, undef );
|
||||
if ( not $borrower->{'borrowernumber'} ) {
|
||||
return { message => 'PatronNotFound' };
|
||||
}
|
||||
=======
|
||||
my $borrower = GetMemberDetails( $borrowernumber );
|
||||
return { code => 'PatronNotFound' } unless $$borrower{borrowernumber};
|
||||
>>>>>>> [MT2306_2271] ILS-DI Message codes consistence:C4/ILSDI.pm
|
||||
|
||||
# Get the biblio or return an error code
|
||||
my $biblionumber = $cgi->param('bib_id');
|
||||
my ( $count, $biblio ) = GetBiblio($biblionumber);
|
||||
<<<<<<< HEAD:C4/ILSDI/Services.pm
|
||||
if ( not $biblio->{'biblionumber'} ) {
|
||||
return { message => 'RecordNotFound' };
|
||||
}
|
||||
|
|
@ -702,6 +792,24 @@ sub HoldItem {
|
|||
if ( ( not $canbookbereserved ) or not($canitembereserved) ) {
|
||||
return { message => 'NotHoldable' };
|
||||
}
|
||||
=======
|
||||
return { code => 'RecordNotFound' } unless $$biblio{biblionumber};
|
||||
|
||||
my $title = $$biblio{title};
|
||||
|
||||
# Get the item or return an error code
|
||||
my $itemnumber = $cgi->param('item_id');
|
||||
my $item = GetItem( $itemnumber );
|
||||
return { code => 'RecordNotFound' } unless $$item{itemnumber};
|
||||
|
||||
# If the biblio does not match the item, return an error code
|
||||
return { code => 'RecordNotFound' } if $$item{biblionumber} ne $$biblio{biblionumber};
|
||||
|
||||
# Check for item disponibility
|
||||
my $canitembereserved = CanItemBeReserved( $borrowernumber, $itemnumber );
|
||||
my $canbookbereserved = CanBookBeReserved( $borrowernumber, $biblionumber );
|
||||
return { code => 'NotHoldable' } unless $canbookbereserved and $canitembereserved;
|
||||
>>>>>>> [MT2306_2271] ILS-DI Message codes consistence:C4/ILSDI.pm
|
||||
|
||||
my $branch;
|
||||
|
||||
|
|
@ -709,11 +817,17 @@ sub HoldItem {
|
|||
if ( $cgi->param('pickup_location') ) {
|
||||
$branch = $cgi->param('pickup_location');
|
||||
my $branches = GetBranches();
|
||||
<<<<<<< HEAD:C4/ILSDI/Services.pm
|
||||
if ( not $branches->{$branch} ) {
|
||||
return { message => 'LocationNotFound' };
|
||||
}
|
||||
} else { # if user provide no branch, use his own
|
||||
$branch = $borrower->{'branchcode'};
|
||||
=======
|
||||
return { code => 'LocationNotFound' } unless $$branches{$branch};
|
||||
} else { # if the request provide no branch, use the borrower's branch
|
||||
$branch = $$borrower{branchcode};
|
||||
>>>>>>> [MT2306_2271] ILS-DI Message codes consistence:C4/ILSDI.pm
|
||||
}
|
||||
|
||||
my $rank;
|
||||
|
|
@ -756,6 +870,7 @@ sub CancelHold {
|
|||
|
||||
# Get the borrower or return an error code
|
||||
my $borrowernumber = $cgi->param('patron_id');
|
||||
<<<<<<< HEAD:C4/ILSDI/Services.pm
|
||||
my $borrower = GetMemberDetails( $borrowernumber, undef );
|
||||
if ( not $borrower->{'borrowernumber'} ) {
|
||||
return { message => 'PatronNotFound' };
|
||||
|
|
@ -767,6 +882,15 @@ sub CancelHold {
|
|||
if ( not $item->{'itemnumber'} ) {
|
||||
return { message => 'RecordNotFound' };
|
||||
}
|
||||
=======
|
||||
my $borrower = GetMemberDetails( $borrowernumber );
|
||||
return { code => 'PatronNotFound' } unless $$borrower{borrowernumber};
|
||||
|
||||
# Get the item or return an error code
|
||||
my $itemnumber = $cgi->param('item_id');
|
||||
my $item = GetItem( $itemnumber );
|
||||
return { code => 'RecordNotFound' } unless $$item{itemnumber};
|
||||
>>>>>>> [MT2306_2271] ILS-DI Message codes consistence:C4/ILSDI.pm
|
||||
|
||||
# Get borrower's reserves
|
||||
my @reserves = GetReservesFromBorrowernumber( $borrowernumber, undef );
|
||||
|
|
@ -778,15 +902,23 @@ sub CancelHold {
|
|||
}
|
||||
|
||||
# if the item was not reserved by the borrower, returns an error code
|
||||
<<<<<<< HEAD:C4/ILSDI/Services.pm
|
||||
if ( not grep { $itemnumber eq $_ } @reserveditems ) {
|
||||
return { message => 'NotCanceled' };
|
||||
}
|
||||
=======
|
||||
return { code => 'NotCanceled' } unless any { $itemnumber eq $_ } @reserveditemnumbers;
|
||||
>>>>>>> [MT2306_2271] ILS-DI Message codes consistence:C4/ILSDI.pm
|
||||
|
||||
# Cancel the reserve
|
||||
CancelReserve( $itemnumber, undef, $borrowernumber );
|
||||
|
||||
<<<<<<< HEAD:C4/ILSDI/Services.pm
|
||||
return { message => 'Canceled' };
|
||||
|
||||
=======
|
||||
return { code => 'Canceled' };
|
||||
>>>>>>> [MT2306_2271] ILS-DI Message codes consistence:C4/ILSDI.pm
|
||||
}
|
||||
|
||||
1;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
<!-- TMPL_INCLUDE NAME="doc-head-open.inc" --><!-- TMPL_VAR NAME="LibraryNameTitle" DEFAULT="Koha Online" --> Catalog › ISBD
|
||||
<!-- TMPL_INCLUDE NAME="doc-head-open.inc" --><!-- TMPL_VAR NAME="LibraryNameTitle" DEFAULT="Koha Online" --> › ILS-DI
|
||||
<!-- TMPL_INCLUDE NAME="doc-head-close.inc" -->
|
||||
</head>
|
||||
<body>
|
||||
|
|
@ -697,11 +697,11 @@
|
|||
<li>HarvestAuthorityRecords <em>(Use OAI-PMH instead)</em></li>
|
||||
<li>HarvestHoldingsRecords <em>(Use OAI-PMH instead)</em></li>
|
||||
<li><a href="ilsdi.pl?service=Describe&verb=GetRecords">GetRecords</a></li>
|
||||
<li>Search</li>
|
||||
<li>Scan</li>
|
||||
<li>Search <em>(Use SRU instead)</em></li>
|
||||
<li>Scan <em>(Use SRU instead)</em></li>
|
||||
<li><a href="ilsdi.pl?service=Describe&verb=GetAuthorityRecords">GetAuthorityRecords</a></li>
|
||||
<li>OutputRewritablePage</li>
|
||||
<li>OutputIntermediateFormat</li>
|
||||
<li>OutputRewritablePage <em>(Not supported yet)</em></li>
|
||||
<li>OutputIntermediateFormat <em>(Not supported yet)</em></li>
|
||||
</ul>
|
||||
<h2>Level 3: Elementary OPAC alternative</h2>
|
||||
<ul>
|
||||
|
|
@ -719,8 +719,8 @@
|
|||
</ul>
|
||||
<h2>Level 4: Robust/domain specific discovery platforms</h2>
|
||||
<ul>
|
||||
<li>SearchCourseReserves</li>
|
||||
<li>Explain</li>
|
||||
<li>SearchCourseReserves <em>(Not supported yet)</em></li>
|
||||
<li>Explain <em>(Not supported yet)</em></li>
|
||||
</ul>
|
||||
|
||||
<!-- /TMPL_IF -->
|
||||
|
|
|
|||
|
|
@ -141,10 +141,12 @@ if ( $cgi->param('service') eq "Describe" and any { $cgi->param('verb') eq $_ }
|
|||
exit 0;
|
||||
}
|
||||
|
||||
my $out;
|
||||
|
||||
# If ILS-DI module is disabled in System->Preferences, redirect to 404
|
||||
unless ( C4::Context->preference('ILS-DI') ) {
|
||||
print $cgi->redirect("/cgi-bin/koha/errors/404.pl");
|
||||
exit 1;
|
||||
$out->{'code'} = "NotAllowed";
|
||||
$out->{'message'} = "ILS-DI is disabled.";
|
||||
}
|
||||
|
||||
# If the remote address is not allowed, redirect to 403
|
||||
|
|
@ -152,14 +154,12 @@ my @AuthorizedIPs = split(/,/, C4::Context->preference('ILS-DI:AuthorizedIPs'));
|
|||
if ( @AuthorizedIPs # If no filter set, allow access to everybody
|
||||
and not any { $ENV{'REMOTE_ADDR'} eq $_ } @AuthorizedIPs # IP Check
|
||||
) {
|
||||
print $cgi->redirect("/cgi-bin/koha/errors/403.pl");
|
||||
exit 1;
|
||||
$out->{'code'} = "NotAllowed";
|
||||
$out->{'message'} = "Unauthorized IP address: ".$ENV{'REMOTE_ADDR'}.".";
|
||||
}
|
||||
|
||||
my $service = $cgi->param('service') || "ilsdi";
|
||||
|
||||
my $out;
|
||||
|
||||
# Check if the requested service is in the list
|
||||
if ( $service and any { $service eq $_ } @services ) {
|
||||
|
||||
|
|
@ -173,7 +173,8 @@ if ( $service and any { $service eq $_ } @services ) {
|
|||
# check for missing parameters
|
||||
for ( @parmsrequired ) {
|
||||
unless ( exists $paramhash{$_} ) {
|
||||
$out->{'message'} = "missing $_ parameter";
|
||||
$out->{'code'} = "MissingParameter";
|
||||
$out->{'message'} = "The required parameter ".$_." is missing.";
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -186,7 +187,8 @@ if ( $service and any { $service eq $_ } @services ) {
|
|||
}
|
||||
}
|
||||
if ( $found == 0 && $name ne 'service' ) {
|
||||
$out->{'message'} = "$name is an illegal parameter";
|
||||
$out->{'code'} = "IllegalParameter";
|
||||
$out->{'message'} = "The parameter ".$name." is illegal.";
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -194,7 +196,8 @@ if ( $service and any { $service eq $_ } @services ) {
|
|||
for ( @names ) {
|
||||
my @values = $cgi->param($_);
|
||||
if ( $#values != 0 ) {
|
||||
$out->{'message'} = "multiple values are not allowed for the $_ parameter";
|
||||
$out->{'code'} = "MultipleValuesNotAllowed";
|
||||
$out->{'message'} = "Multiple values not allowed for the parameter ".$_.".";
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue