# -- # Copyright (C) 2001-2019 OTRS AG, https://otrs.com/ # -- # This software comes with ABSOLUTELY NO WARRANTY. For details, see # the enclosed file COPYING for license information (GPL). If you # did not receive this file, see https://www.gnu.org/licenses/gpl-3.0.txt. # -- package Kernel::GenericInterface::Invoker::Test::Test; use strict; use warnings; use Kernel::System::VariableCheck qw(IsString IsStringWithData); # prevent 'Used once' warning for Kernel::OM use Kernel::System::ObjectManager; our $ObjectManagerDisabled = 1; =head1 NAME Kernel::GenericInterface::Invoker::Test::Test - GenericInterface test Invoker backend =head1 PUBLIC INTERFACE =head2 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 if ( !$Param{DebuggerObject} ) { return { Success => 0, ErrorMessage => "Got no DebuggerObject!" }; } $Self->{DebuggerObject} = $Param{DebuggerObject}; return $Self; } =head2 PrepareRequest() prepare the invocation of the configured remote web service. 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} = $Kernel::OM->Create('Kernel::System::DateTime')->ToEpoch(); } return { Success => 1, Data => \%ReturnData, }; } =head2 HandleResponse() handle response data of the configured remote web service. my $Result = $InvokerObject->HandleResponse( ResponseSuccess => 1, # success status of the remote web service ResponseErrorMessage => '', # in case of web service 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; =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 (GPL). If you did not receive this file, see L. =cut