# -- # Kernel/GenericInterface/Invoker/Test.pm - GenericInterface test data Invoker backend # Copyright (C) 2001-2011 OTRS AG, http://otrs.org/ # -- # $Id: Test.pm,v 1.12 2011/03/17 13:32:19 mg Exp $ # -- # This software comes with ABSOLUTELY NO WARRANTY. For details, see # the enclosed file COPYING for license information (AGPL). If you # did not receive this file, see http://www.gnu.org/licenses/agpl.txt. # -- package Kernel::GenericInterface::Invoker::Test::Test; use strict; use warnings; use Kernel::System::VariableCheck qw(IsString IsStringWithData); use vars qw(@ISA $VERSION); $VERSION = qw($Revision: 1.12 $) [1]; =head1 NAME Kernel::GenericInterface::Invoker::Test::Test - GenericInterface test Invoker backend =head1 SYNOPSIS =head1 PUBLIC INTERFACE =over 4 =cut =item new() usually, you want to create an instance of this by using Kernel::GenericInterface::Invoker->new(); =cut sub new { my ( $Type, %Param ) = @_; # allocate new hash for object my $Self = {}; bless( $Self, $Type ); # check needed params for my $Needed (qw(DebuggerObject MainObject TimeObject)) { if ( !$Param{$Needed} ) { return { Success => 0, ErrorMessage => "Got no $Needed!" }; } $Self->{$Needed} = $Param{$Needed}; } return $Self; } =item PrepareRequest() prepare the invocation of the configured remote webservice. my $Result = $InvokerObject->PrepareRequest( Data => { # data payload ... }, ); $Result = { Success => 1, # 0 or 1 ErrorMessage => '', # in case of error Data => { # data payload after Invoker ... }, }; =cut sub PrepareRequest { my ( $Self, %Param ) = @_; # we need a TicketNumber if ( !IsStringWithData( $Param{Data}->{TicketNumber} ) ) { return $Self->{DebuggerObject}->Error( Summary => 'Got no TicketNumber' ); } my %ReturnData; $ReturnData{TicketNumber} = $Param{Data}->{TicketNumber}; # check Action if ( IsStringWithData( $Param{Data}->{Action} ) ) { $ReturnData{Action} = $Param{Data}->{Action} . 'Test'; } # check request for system time if ( IsStringWithData( $Param{Data}->{GetSystemTime} ) && $Param{Data}->{GetSystemTime} ) { $ReturnData{SystemTime} = $Self->{TimeObject}->SystemTime(); } return { Success => 1, Data => \%ReturnData, }; } =item HandleResponse() handle response data of the configured remote webservice. my $Result = $InvokerObject->HandleResponse( ResponseSuccess => 1, # success status of the remote webservice ResponseErrorMessage => '', # in case of webservice error Data => { # data payload ... }, ); $Result = { Success => 1, # 0 or 1 ErrorMessage => '', # in case of error Data => { # data payload after Invoker ... }, }; =cut sub HandleResponse { my ( $Self, %Param ) = @_; # if there was an error in the response, forward it if ( !$Param{ResponseSuccess} ) { if ( !IsStringWithData( $Param{ResponseErrorMessage} ) ) { return $Self->{DebuggerObject}->Error( Summary => 'Got response error, but no response error message!', ); } return { Success => 0, ErrorMessage => $Param{ResponseErrorMessage}, }; } # we need a TicketNumber if ( !IsStringWithData( $Param{Data}->{TicketNumber} ) ) { return $Self->{DebuggerObject}->Error( Summary => 'Got no TicketNumber!' ); } # prepare TicketNumber my %ReturnData = ( TicketNumber => $Param{Data}->{TicketNumber}, ); # check Action if ( IsStringWithData( $Param{Data}->{Action} ) ) { if ( $Param{Data}->{Action} !~ m{ \A ( .*? ) Test \z }xms ) { return $Self->{DebuggerObject}->Error( Summary => 'Got Action but it is not in required format!', ); } $ReturnData{Action} = $1; } return { Success => 1, Data => \%ReturnData, }; } 1; =back =head1 TERMS AND CONDITIONS This software is part of the OTRS project (L). This software comes with ABSOLUTELY NO WARRANTY. For details, see the enclosed file COPYING for license information (AGPL). If you did not receive this file, see L. =cut =head1 VERSION $Revision: 1.12 $ $Date: 2011/03/17 13:32:19 $ =cut