From: dbs Date: Sun, 1 May 2011 00:28:23 +0000 (+0000) Subject: Add excerpt AC and avoid rate-limiting for OpenLibrary content X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=6c53a0f3c7d5e7b7860c2ca0064e6abdfcaf8276;p=evergreen%2Fequinox.git Add excerpt AC and avoid rate-limiting for OpenLibrary content OpenLibrary added rate-limiting (100 cover requests per 5 minutes) for cover images requested by ISBN; using the OpenLibrary book API to pull the list of direct cover URLs avoids the rate limit. Also, add excerpt added content calls for OpenLibrary. Signed-off-by: Dan Scott git-svn-id: svn://svn.open-ils.org/ILS/trunk@20354 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- diff --git a/Open-ILS/src/perlmods/lib/OpenILS/WWW/AddedContent/OpenLibrary.pm b/Open-ILS/src/perlmods/lib/OpenILS/WWW/AddedContent/OpenLibrary.pm index 41f8ee8727..f607c3283b 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/WWW/AddedContent/OpenLibrary.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/WWW/AddedContent/OpenLibrary.pm @@ -101,6 +101,46 @@ sub excerpt_html { $self->send_html("
$excerpt_html
"); } +sub excerpt_html { + my( $self, $key ) = @_; + my $book_details_json = $self->fetch_details_response($key)->content(); + + $logger->debug("$key: $book_details_json"); + + my $excerpt_html; + + my $book_details = OpenSRF::Utils::JSON->JSON2perl($book_details_json); + my $book_key = (keys %$book_details)[0]; + + # We didn't find a matching book; short-circuit our response + if (!$book_key) { + $logger->debug("$key: no found book"); + return 0; + } + + my $first_sentence = $book_details->{$book_key}->{first_sentence}; + if ($first_sentence) { + $excerpt_html .= "
$first_sentence
\n"; + } + + my $excerpts_json = $book_details->{$book_key}->{excerpts}; + if ($excerpts_json && scalar(@$excerpts_json)) { + # Load up excerpt text with comments in tooltip + foreach my $excerpt (@$excerpts_json) { + my $text = $excerpt->{text}; + my $cmnt = $excerpt->{comment}; + $excerpt_html .= "
$cmnt
\n"; + } + } + + if (!$excerpt_html) { + return 0; + } + + $logger->debug("$key: $excerpt_html"); + $self->send_html("
$excerpt_html
"); +} + =head1 OpenLibrary returns a JSON hash of zero or more book responses matching our