From: tla Date: Tue, 12 Nov 2013 09:52:51 +0000 (+0100) Subject: Isolate Stemweb calls into own controller; guard against server being down. #29 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=664580033ad210926cafbb4940b20078f61b7cc0;p=scpubgit%2Fstemmaweb.git Isolate Stemweb calls into own controller; guard against server being down. #29 --- diff --git a/lib/stemmaweb/Controller/Root.pm b/lib/stemmaweb/Controller/Root.pm index 82fde7d..0315867 100644 --- a/lib/stemmaweb/Controller/Root.pm +++ b/lib/stemmaweb/Controller/Root.pm @@ -2,7 +2,6 @@ package stemmaweb::Controller::Root; use Moose; use namespace::autoclean; use JSON qw (); -use LWP::UserAgent; use TryCatch; use XML::LibXML; use XML::LibXML::XPathContext; @@ -16,8 +15,6 @@ BEGIN { extends 'Catalyst::Controller' } # __PACKAGE__->config(namespace => ''); -my $STEMWEB_BASE_URL = 'http://slinkola.users.cs.helsinki.fi'; - =head1 NAME stemmaweb::Controller::Root - Root Controller for stemmaweb @@ -42,14 +39,6 @@ sub index :Path :Args(0) { if( $c->req->param('withtradition') ) { $c->stash->{'withtradition'} = $c->req->param('withtradition'); } - # Get the current list of Stemweb algorithms - my $ua = LWP::UserAgent->new(); - my $resp = $ua->get( $STEMWEB_BASE_URL . '/algorithms/available' ); - if( $resp->is_success ) { - $c->stash->{'stemweb_algorithms'} = $resp->content; - } else { - $c->stash->{'stemweb_algorithms'} = '{}'; - } $c->stash->{template} = 'index.tt'; } diff --git a/lib/stemmaweb/Controller/Stemweb.pm b/lib/stemmaweb/Controller/Stemweb.pm index 33c717f..2a31903 100644 --- a/lib/stemmaweb/Controller/Stemweb.pm +++ b/lib/stemmaweb/Controller/Stemweb.pm @@ -75,6 +75,27 @@ sub result :Local :Args(0) { } } +=head2 available + + GET algorithms/available + +Queries the Stemweb server for available stemma generation algorithms and their +parameters. Returns the JSON answer as obtained from Stemweb. + +=cut + +sub available :Local :Args(0) { + my( $self, $c ) = @_; + my $ua = LWP::UserAgent->new(); + my $resp = $ua->get( $STEMWEB_BASE_URL . '/algorithms/available' ); + if( $resp->is_success ) { + $c->stash->{'result'} = $resp->content; + } else { + $c->stash->{'result'} = '{}'; + } + $c->forward('View::JSON'); +} + =head2 query GET stemweb/query/ diff --git a/root/js/componentload.js b/root/js/componentload.js index 7551a86..06a8706 100644 --- a/root/js/componentload.js +++ b/root/js/componentload.js @@ -551,52 +551,58 @@ $(document).ready( function() { // populate the form. var algorithmTypes = {}; var algorithmArgs = {}; - $.each( stemwebAlgorithms, function( i, o ) { - if( o.model === 'algorithms.algorithm' ) { - // it's an algorithm. - algorithmTypes[ o.pk ] = o.fields; - } else if( o.model == 'algorithms.algorithmarg' && o.fields.external ) { - // it's an option for an algorithm that we should display. - algorithmArgs[ o.pk ] = o.fields; - } - }); - $.each( algorithmTypes, function( pk, fields ) { - var algopt = $('