Trying to get the headers set correctly
authorChris Cormack <chrisc@catalyst.net.nz>
Mon, 3 Mar 2014 22:31:19 +0000 (11:31 +1300)
committerChris Cormack <chrisc@catalyst.net.nz>
Mon, 3 Mar 2014 22:31:19 +0000 (11:31 +1300)
lib/NCIP/Handler.pm
lib/NCIP/Handler/LookupUser.pm
templates/response.tt

index 58b1d1d..2618e79 100644 (file)
@@ -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;
index e116663..12285e7 100644 (file)
@@ -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;
index 497781d..167ce2e 100644 (file)
@@ -4,16 +4,10 @@
     <[% messagetype %]>
        <ResponseHeader>
             <FromAgencyId>
-                <UniqueAgencyId>
-                    <Scheme>[% schemeurl %]</Scheme>
-                    <Value>[% fromagency %]</Value>
-                </UniqueAgencyId>
+              <AgencyId>[% fromagency %]</AgencyId>
             </FromAgencyId>
             <ToAgencyId>
-                <UniqueAgencyId>
-                    <Scheme>[% schemeurl %]</Scheme>
-                    <Value>[% toagency %]</Value>
-                </UniqueAgencyId>
+               <AgencyId>[% toagency %]</AgencyId>
             </ToAgencyId>
         </ResponseHeader>
     [% myfile = "includes/$messagetype" _ ".inc" %]