From a39dd02bcf71e34119075cb1e084b6894dbafd68 Mon Sep 17 00:00:00 2001 From: Chris Cormack Date: Tue, 4 Mar 2014 11:31:19 +1300 Subject: [PATCH] Trying to get the headers set correctly --- lib/NCIP/Handler.pm | 19 +++++++++++++++++-- lib/NCIP/Handler/LookupUser.pm | 12 ++++++++++-- templates/response.tt | 10 ++-------- 3 files changed, 29 insertions(+), 12 deletions(-) diff --git a/lib/NCIP/Handler.pm b/lib/NCIP/Handler.pm index 58b1d1d..2618e79 100644 --- a/lib/NCIP/Handler.pm +++ b/lib/NCIP/Handler.pm @@ -89,13 +89,28 @@ sub get_user_elements { my $root = $xmldoc->documentElement(); my @elements = - $xpc->findnodes( 'ns:LookupUser/UserElementType/Value', $root ); + $xpc->findnodes( '//ns:LookupUser/UserElementType/Value', $root ); unless ( $elements[0] ) { - @elements = $xpc->findnodes( 'ns:LookupUser/UserElementType', $root ); + @elements = $xpc->findnodes( '//ns:UserElementType', $root ); } return \@elements; } +sub get_agencies { + my $self = shift; + my $xmldoc = shift; + my $xpc = XML::LibXML::XPathContext->new; + $xpc->registerNs( 'ns', $self->namespace() ); + + my $root = $xmldoc->documentElement(); + + my @from = + $xpc->findnodes( '//ns:InitiationHeader/FromAgencyId/AgencyId', $root ); + my @to = + $xpc->findnodes( '//ns:InitiationHeader/ToAgencyId/AgencyId', $root ); + return ( $from[0]->textContent, $to[0]->textContent ); +} + sub render_output { my $self = shift; my $templatename = shift; diff --git a/lib/NCIP/Handler/LookupUser.pm b/lib/NCIP/Handler/LookupUser.pm index e116663..12285e7 100644 --- a/lib/NCIP/Handler/LookupUser.pm +++ b/lib/NCIP/Handler/LookupUser.pm @@ -64,11 +64,20 @@ sub handle { my $user = NCIP::User->new( { userid => $user_id, ils => $self->ils } ); $user->initialise(); + my $vars; + +# this bit should be at a lower level + + my ($from,$to) = $self->get_agencies($xmldoc); + + # we switch these for the templates + # because we are responding, to becomes from, from becomes to + $vars->{'fromagency'} = $to; + $vars->{'toagency'} = $from; # if we have blank user, we need to return that # and can skip looking for elementtypes if ( $user->userdata->{'borrowernumber'} eq '' ) { - my $vars; $vars->{'messagetype'} = 'LookupUserResponse'; $vars->{'error_detail'} = "Borrower not found"; my $output = $self->render_output( 'problem.tt', $vars ); @@ -77,7 +86,6 @@ sub handle { my $elements = $self->get_user_elements($xmldoc); #set up the variables for our template - my $vars; $vars->{'messagetype'} = 'LookupUserResponse'; $vars->{'elements'} = $elements; $vars->{'user'} = $user; diff --git a/templates/response.tt b/templates/response.tt index 497781d..167ce2e 100644 --- a/templates/response.tt +++ b/templates/response.tt @@ -4,16 +4,10 @@ <[% messagetype %]> - - [% schemeurl %] - [% fromagency %] - + [% fromagency %] - - [% schemeurl %] - [% toagency %] - + [% toagency %] [% myfile = "includes/$messagetype" _ ".inc" %] -- 2.43.2