use strict; use warnings;
use Apache2::Const -compile => qw(OK FORBIDDEN HTTP_INTERNAL_SERVER_ERROR);
use OpenSRF::Utils::Logger qw/$logger/;
+use OpenSRF::Utils::JSON;
use OpenILS::Utils::Fieldmapper;
use OpenILS::Application::AppUtils;
use OpenILS::Utils::CStoreEditor qw/:funcs/;
use OpenILS::Event;
use Data::Dumper;
+use LWP::UserAgent;
use OpenILS::Utils::KCLSNormalize;
$Data::Dumper::Indent = 0;
my $U = 'OpenILS::Application::AppUtils';
+my $HEADER_FOOTER_URL =
+ 'http://kcls.bibliocms.com/template_api.json?return_data=all';
+my $HEADER_FOOTER_TIMEOUT = 5;
+
sub load_patron_reg {
my $self = shift;
my $ctx = $self->ctx;
$ctx->{register} = {};
$self->collect_register_validation_settings;
$self->collect_requestor_info;
+ $self->collect_header_footer;
# in the home org unit selector, we only want to present
# org units to the patron which support self-registration.
return $value;
}
+# cache for re-use
+my $header;
+my $footer;
+sub collect_header_footer {
+ my $self = shift;
+
+ if ($header) {
+ $self->ctx->{register_header} = $header;
+ $self->ctx->{register_footer} = $footer;
+ return;
+ }
+
+ my $agent = LWP::UserAgent->new(timeout => 5);
+ my $res = $agent->get($HEADER_FOOTER_URL);
+ $logger->info("Self-reg header/footer request returned code ".$res->code);
+
+ if (!$res->is_success) {
+ $logger->error("Self-reg header/footer request ".
+ "[$HEADER_FOOTER_URL] failed with error " . $res->status_line);
+
+ return;
+ }
+
+ my $json = $res->content;
+
+ if (!$json) {
+ $logger->error("Self-reg header/footer ".
+ "[$HEADER_FOOTER_URL] returned an empty response");
+ return;
+ }
+
+
+ my $blob;
+ eval { $blob = OpenSRF::Utils::JSON->JSON2perl($json) };
+
+ if ($@) {
+ $logger->error("Self-reg header/footer ".
+ "[$HEADER_FOOTER_URL] returned invalid JSON : $@");
+ return;
+ }
+
+ $self->ctx->{register_header} = $header = $blob->{header};
+ $self->ctx->{register_footer} = $footer = $blob->{footer};
+}
+1;