public pubReversalResponse pubReversal(pubReversalRequest pubReversalRequest)
    {
        pubReversalRequest1 inValue = new pubReversalRequest1();

        inValue.pubReversalRequest = pubReversalRequest;
        pubReversalResponse1 retVal = ((providerInterface)(this)).pubReversal(inValue);

        return(retVal.pubReversalResponse);
    }
        /// <summary>
        /// Reverses a previous deal redemption.
        /// </summary>
        /// <param name="request">
        /// The deal redemption reversal request.
        /// </param>
        /// <returns>
        /// A deal redemption reversal response.
        /// </returns>
        /// <exception cref="ArgumentNullException">
        /// Parameter request cannot be null.
        /// </exception>
        public pubReversalResponse1 pubReversal(pubReversalRequest1 request)
        {
            Stopwatch callTimer = Stopwatch.StartNew();

            if (request == null)
            {
                throw new ArgumentNullException("request", "Parameter request cannot be null.");
            }

            pubReversalResponse1 result = new pubReversalResponse1(new pubReversalResponse()
            {
                reqID = request.pubReversalRequest.reqID
            });

            // Split processing of timeout and non-timeout reversals.
            HttpStatusCode httpStatusCode;

            if (request.pubReversalRequest.revReason == FirstDataConstants.ReverseRedeemedDealIndicator)
            {
                // Build a context object to pass down the pipeline.
                CommerceContext context = CommerceContext.BuildSynchronousContext("First Data Reverse redeemed deal",
                                                                                  request.pubReversalRequest,
                                                                                  result.pubReversalResponse);

                // Process the call.
                httpStatusCode = ProcessFirstDataCall(context, callTimer, () =>
                {
                    FirstDataReverseRedeemedDealExecutor executor = new FirstDataReverseRedeemedDealExecutor(context);
                    return(executor.Execute());
                });
            }
            else
            {
                // Build a context object to pass down the pipeline.
                CommerceContext context = CommerceContext.BuildSynchronousContext("First Data process redemption timeout",
                                                                                  request.pubReversalRequest,
                                                                                  result.pubReversalResponse);

                // Process the call.
                httpStatusCode = ProcessFirstDataCall(context, callTimer, () =>
                {
                    FirstDataProcessRedemptionTimeoutExecutor executor = new FirstDataProcessRedemptionTimeoutExecutor(context);
                    return(executor.Execute());
                });
            }

            // Throw exception if the operation did not succeed.
            if (httpStatusCode != HttpStatusCode.OK)
            {
                throw new WebFaultException <pubReversalResponse1>(result, httpStatusCode);
            }

            return(result);
        }