#!/apps/remdev/ars/ars/perl -w
#
# Test Remedy WebService
#
use Env;
use SOAP::Lite;
#trace=>'all';
#+trace => [ transport => \&SOAP_log ];
 
sub SOAP_log {
    # Assume Transport Logging Only
    my ($in) = @_;
    my $doubleLF = chr(10).chr(10);
    my $singleLF = chr(10);
    my($sName,$sVal) = split(/=/,$in,2);    
 
    while( my ($k, $v) = each %$in ) {
      if ( $k eq "_content" ) {
         $sVal = "$sName\n".$v;
         $sVal =~ s/$doubleLF/$singleLF/g;
         write_log ( $sVal );
      }
    }
 }
 
sub write_log {
#  my $arLogFile=$ENV{'ARCONFIGDIR'}."/tmp/fred_Remedy_SOAP.log";
   my $arLogFile="Remedy_SOAP.log";
   my($message) = @_;
 
   $message="$message";
 
   chop(my $date = `date +'%a %b %e %Y %T'`);
   my $messagehead = "<PERL> <TID: 0> <RPC ID: 0> <Queue: 0> <Client-RPC: 0> <USER: perl> /* $date */ ";
 
   warn "Could not open logfile: $arLogFile\n" unless (open (LOGFILE, ">>$arLogFile"));
   print LOGFILE "$messagehead $message\n";
   warn "Could not close logfile: $arLogFile\n" unless (close (LOGFILE));
}
 

my $USERNAME  = "username-goes-here";
my $PASSWORD  = "password-goes-here";
 
my $arServer = "ars-server-goes-here";
my $arwebServer = "midtier-server-goes-here";
my $ServiceName  = "webservice-name-goes-here";
my $RemedyURL    = "http://".$arwebServer."/arsys/services/ARService?server=".$arServer."&webService=".$ServiceName;
my $RemedyNS     = "urn:".$ServiceName;
 
my $Descrip = "Error Detected with...";
my $newline = "\n"; #newline is not working???
my $Work_Log = "This is an update to the worklog from:".$newline."-netcool has closed this incident.";
#my $UpdateDate = "2006-11-17T20:35:11";
#my $UpdateDate = localtime(time);
 
my $soap = SOAP::Lite
    -> proxy($RemedyURL)
    -> ns($RemedyNS,'ns1')
    -> autotype(0)
    -> readable(1);
 
my $som = $soap->OpCreate(
       SOAP::Header->name('AuthenticationInfo' => \SOAP::Header->value(
       SOAP::Header->name('userName' => $USERNAME),
       SOAP::Header->name('password' => $PASSWORD) )),
                 SOAP::Data->name('Entry_Description'   => $Descrip ),
                 SOAP::Data->name('Work_Log'  => $Work_Log ));


if ($som->fault){
print "Fault :", $som->faultstring, "\n";
print "Faultcode :",$som->faultcode, "\n";
print "Faultdetail :", %{$som->faultdetail}, "\n";
}else{

foreach my $field ($som->valueof('//OpCreateResponse')) {

print "-----------------------------------------\n";
# print description for every field then the returned value
foreach my $fieldname (sort keys %{$field}) {
# use the if statment to supress fields with empty values
#if ($field->{$fieldname}){

print $fieldname, ": '",
$field->{$fieldname}, "'\n";

#}
}
}
print "Create successful.\n";
}
#print $som; 

