1 package OpenILS::WWW::AddedContent::Syndetic;
2 use strict; use warnings;
4 use OpenSRF::Utils::Logger qw/$logger/;
5 use OpenSRF::Utils::SettingsParser;
7 use OpenSRF::EX qw/:try/;
12 my( $class, $args ) = @_;
13 $class = ref $class || $class;
14 return bless($args, $class);
19 return $self->{base_url};
24 return $self->{userid};
28 # --------------------------------------------------------------------------
31 my( $self, $key ) = @_;
32 return $self->send_html(
33 $self->fetch_content('toc.html', $key));
37 my( $self, $key ) = @_;
38 return $self->send_xml(
39 $self->fetch_content('toc.xml', $key));
43 my( $self, $key ) = @_;
44 return $self->send_json(
45 $self->fetch_content('toc.xml', $key));
48 # --------------------------------------------------------------------------
51 my( $self, $key ) = @_;
52 return $self->send_html(
53 $self->fetch_content('anotes.html', $key));
57 my( $self, $key ) = @_;
58 return $self->send_xml(
59 $self->fetch_content('anotes.xml', $key));
63 my( $self, $key ) = @_;
64 return $self->send_json(
65 $self->fetch_content('anotes.xml', $key));
69 # --------------------------------------------------------------------------
72 my( $self, $key ) = @_;
73 return $self->send_html(
74 $self->fetch_content('dbchapter.html', $key));
78 my( $self, $key ) = @_;
79 return $self->send_xml(
80 $self->fetch_content('dbchapter.xml', $key));
84 my( $self, $key ) = @_;
85 return $self->send_json(
86 $self->fetch_content('dbchapter.xml', $key));
89 # --------------------------------------------------------------------------
92 my( $self, $key ) = @_;
96 $reviews{ljreview} = $self->fetch_content('ljreview.html', $key);
97 $reviews{pwreview} = $self->fetch_content('pwreview.html', $key);
98 $reviews{slreview} = $self->fetch_content('slreview.html', $key);
99 $reviews{chreview} = $self->fetch_content('chreview.html', $key);
100 $reviews{blreview} = $self->fetch_content('blreview.html', $key);
101 $reviews{hbreview} = $self->fetch_content('hbreview.html', $key);
102 $reviews{kirkreview} = $self->fetch_content('kirkreview.html', $key);
105 if( ! $self->data_exists($reviews{$_}) ) {
109 $reviews{$_} =~ s/<!.*?>//og; # Strip any doctype declarations
112 return 0 if scalar(keys %reviews) == 0;
116 $html .= $reviews{$_} for keys %reviews;
119 return $self->send_html($html);
122 # we have to aggregate the reviews
124 my( $self, $key ) = @_;
127 $reviews{ljreview} = $self->fetch_content('ljreview.xml', $key);
128 $reviews{pwreview} = $self->fetch_content('pwreview.xml', $key);
129 $reviews{slreview} = $self->fetch_content('slreview.xml', $key);
130 $reviews{chreview} = $self->fetch_content('chreview.xml', $key);
131 $reviews{blreview} = $self->fetch_content('blreview.xml', $key);
132 $reviews{hbreview} = $self->fetch_content('hbreview.xml', $key);
133 $reviews{kirkreview} = $self->fetch_content('kirkreview.xml', $key);
136 if( ! $self->data_exists($reviews{$_}) ) {
140 # Strip the xml and doctype declarations
141 $reviews{$_} =~ s/<\?xml.*?>//og;
142 $reviews{$_} =~ s/<!.*?>//og;
145 return 0 if scalar(keys %reviews) == 0;
147 my $xml = "<reviews>";
148 $xml .= $reviews{$_} for keys %reviews;
149 $xml .= "</reviews>";
151 return $self->send_xml($xml);
156 my( $self, $key ) = @_;
157 return $self->send_json(
158 $self->fetch_content('dbchapter.xml', $key));
161 # --------------------------------------------------------------------------
165 my( $self, $data ) = @_;
166 return 0 if $data =~ m/<title>error<\/title>/iog;
172 my( $self, $xml ) = @_;
173 return 0 unless $self->data_exists($xml);
177 $doc = XML::LibXML->new->parse_string($xml);
180 $logger->error("added content XML parser error: $err\n\n$xml");
184 return 0 unless $doc;
185 my $perl = OpenSRF::Utils::SettingsParser::XML2perl($doc->documentElement);
186 my $json = JSON->perl2JSON($perl);
187 print "Content-type: text/plain\n\n";
193 my( $self, $xml ) = @_;
194 return 0 unless $self->data_exists($xml);
195 print "Content-Type: application/xml\n\n";
201 my( $self, $content ) = @_;
202 return 0 unless $self->data_exists($content);
204 # Hide anything that might contain a link since it will be broken
205 my $HTML = <<" HTML";
207 <style type='text/css'>
208 div.ac input, div.ac a[href],div.ac img, div.ac button { display: none; visibility: hidden }
216 print "Content-type: text/html\n\n";
223 my( $self, $page, $key ) = @_;
224 my $uname = $self->userid;
225 my $url = $self->base_url . "?isbn=$key/$page&client=$uname&type=rw12";
226 $logger->info("added content URL = $url");
227 my $agent = LWP::UserAgent->new;
228 my $res = $agent->get($url);
229 die "added content request failed: $res->status_line\n" unless $res->is_success;
230 return $res->content;