package main;

use strict;
use warnings FATAL => "all";
use vars qw($spooler $spooler_log $spooler_job $spooler_task);


sub spooler_process() {

  my $rc = 1;

  eval {
    my $order     = $spooler_task->order;
    my $operation = $order->web_service_operation;
    my $request   = $operation->request;
    my $response  = $operation->response;

    if ($spooler_task->params->value("response_stylesheet") && length($spooler_task->params->value("response_stylesheet")) > 0) {
      # .. either transform the response from order parameters and payload
      my $stylesheet = $spooler->create_xslt_stylesheet();
      $stylesheet->load_file( $spooler_task->params->value("response_stylesheet") );
      my $xml_document = $stylesheet->apply_xml( $order->xml );
      $spooler_log->debug3( "output of response transformation:\n" . $xml_document );
      $response->LetProperty( 'string_content', $xml_document);
    } else {
      # .. or send an individual response (use $payload->xml or $xml_payload to access order data)
      $response->LetProperty( 'string_content', "<response state=\"success\">" . $spooler_task->order->payload->xml . "</response>" );
    }

    $response->send();
    $spooler_log->info( "web service response successfully processed for order \"" . $order->id . "\"" ); 
  };
  if ( $@ ) {
    chomp $@; 
    $spooler_log->warn( $@ ); 
    return 0;
  }
  
  return $rc;
}