// Copyright © WireMock.Net
using System;
using System.Diagnostics.CodeAnalysis;
using System.Threading.Tasks;
using Stef.Validation;
namespace WireMock.ResponseBuilders;
public partial class Response
{
///
/// A delegate to execute to generate the response.
///
[MemberNotNullWhen(true, nameof(WithCallbackUsed))]
public Func? Callback { get; private set; }
///
/// A delegate to execute to generate the response async.
///
[MemberNotNullWhen(true, nameof(WithCallbackUsed))]
public Func>? CallbackAsync { get; private set; }
///
/// Defines if the method WithCallback(...) is used.
///
public bool WithCallbackUsed { get; private set; }
///
public IResponseBuilder WithCallback(Func callbackHandler)
{
Guard.NotNull(callbackHandler);
return WithCallbackInternal(true, callbackHandler);
}
///
public IResponseBuilder WithCallback(Func> callbackHandler)
{
Guard.NotNull(callbackHandler);
return WithCallbackInternal(true, callbackHandler);
}
private IResponseBuilder WithCallbackInternal(bool withCallbackUsed, Func callbackHandler)
{
Guard.NotNull(callbackHandler);
WithCallbackUsed = withCallbackUsed;
Callback = callbackHandler;
return this;
}
private IResponseBuilder WithCallbackInternal(bool withCallbackUsed, Func> callbackHandler)
{
Guard.NotNull(callbackHandler);
WithCallbackUsed = withCallbackUsed;
CallbackAsync = callbackHandler;
return this;
}
}