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/;
8 use OpenILS::WWW::AddedContent;
13 my( $class, $args ) = @_;
14 $class = ref $class || $class;
15 return bless($args, $class);
20 return $self->{base_url};
25 return $self->{userid};
29 # --------------------------------------------------------------------------
32 my( $self, $key ) = @_;
33 return $self->send_html(
34 $self->fetch_content('toc.html', $key));
38 my( $self, $key ) = @_;
39 return $self->send_xml(
40 $self->fetch_content('toc.xml', $key));
44 my( $self, $key ) = @_;
45 return $self->send_json(
46 $self->fetch_content('toc.xml', $key));
49 # --------------------------------------------------------------------------
52 my( $self, $key ) = @_;
53 return $self->send_html(
54 $self->fetch_content('anotes.html', $key));
58 my( $self, $key ) = @_;
59 return $self->send_xml(
60 $self->fetch_content('anotes.xml', $key));
64 my( $self, $key ) = @_;
65 return $self->send_json(
66 $self->fetch_content('anotes.xml', $key));
70 # --------------------------------------------------------------------------
73 my( $self, $key ) = @_;
74 return $self->send_html(
75 $self->fetch_content('dbchapter.html', $key));
79 my( $self, $key ) = @_;
80 return $self->send_xml(
81 $self->fetch_content('dbchapter.xml', $key));
85 my( $self, $key ) = @_;
86 return $self->send_json(
87 $self->fetch_content('dbchapter.xml', $key));
90 # --------------------------------------------------------------------------
93 my( $self, $key ) = @_;
97 $reviews{ljreview} = $self->fetch_content('ljreview.html', $key);
98 $reviews{pwreview} = $self->fetch_content('pwreview.html', $key);
99 $reviews{slreview} = $self->fetch_content('slreview.html', $key);
100 $reviews{chreview} = $self->fetch_content('chreview.html', $key);
101 $reviews{blreview} = $self->fetch_content('blreview.html', $key);
102 $reviews{hbreview} = $self->fetch_content('hbreview.html', $key);
103 $reviews{kirkreview} = $self->fetch_content('kirkreview.html', $key);
106 if( ! $self->data_exists($reviews{$_}) ) {
110 $reviews{$_} =~ s/<!.*?>//og; # Strip any doctype declarations
113 return 0 if scalar(keys %reviews) == 0;
117 $html .= $reviews{$_} for keys %reviews;
120 return $self->send_html($html);
123 # we have to aggregate the reviews
125 my( $self, $key ) = @_;
128 $reviews{ljreview} = $self->fetch_content('ljreview.xml', $key);
129 $reviews{pwreview} = $self->fetch_content('pwreview.xml', $key);
130 $reviews{slreview} = $self->fetch_content('slreview.xml', $key);
131 $reviews{chreview} = $self->fetch_content('chreview.xml', $key);
132 $reviews{blreview} = $self->fetch_content('blreview.xml', $key);
133 $reviews{hbreview} = $self->fetch_content('hbreview.xml', $key);
134 $reviews{kirkreview} = $self->fetch_content('kirkreview.xml', $key);
137 if( ! $self->data_exists($reviews{$_}) ) {
141 # Strip the xml and doctype declarations
142 $reviews{$_} =~ s/<\?xml.*?>//og;
143 $reviews{$_} =~ s/<!.*?>//og;
146 return 0 if scalar(keys %reviews) == 0;
148 my $xml = "<reviews>";
149 $xml .= $reviews{$_} for keys %reviews;
150 $xml .= "</reviews>";
152 return $self->send_xml($xml);
157 my( $self, $key ) = @_;
158 return $self->send_json(
159 $self->fetch_content('dbchapter.xml', $key));
162 # --------------------------------------------------------------------------
166 my( $self, $data ) = @_;
167 return 0 if $data =~ m/<title>error<\/title>/iog;
173 my( $self, $xml ) = @_;
174 return 0 unless $self->data_exists($xml);
178 $doc = XML::LibXML->new->parse_string($xml);
181 $logger->error("added content XML parser error: $err\n\n$xml");
185 return 0 unless $doc;
186 my $perl = OpenSRF::Utils::SettingsParser::XML2perl($doc->documentElement);
187 my $json = JSON->perl2JSON($perl);
188 print "Content-type: text/plain\n\n";
194 my( $self, $xml ) = @_;
195 return 0 unless $self->data_exists($xml);
196 print "Content-Type: application/xml\n\n";
202 my( $self, $content ) = @_;
203 return 0 unless $self->data_exists($content);
205 # Hide anything that might contain a link since it will be broken
206 my $HTML = <<" HTML";
208 <style type='text/css'>
209 div.ac input, div.ac a[href],div.ac img, div.ac button { display: none; visibility: hidden }
217 print "Content-type: text/html\n\n";
224 my( $self, $page, $key ) = @_;
225 my $uname = $self->userid;
226 my $url = $self->base_url . "?isbn=$key/$page&client=$uname&type=rw12";
227 return OpenILS::WWW::AddedContent->get_url($url);