// 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; } }