using System; using System.Threading.Tasks; using JetBrains.Annotations; using WireMock.Validation; using WireMock.Settings; namespace WireMock { internal class DynamicResponseProvider : IResponseProvider { private readonly Func _responseMessageFunc; public DynamicResponseProvider([NotNull] Func responseMessageFunc) { Check.NotNull(responseMessageFunc, nameof(responseMessageFunc)); _responseMessageFunc = responseMessageFunc; } public Task ProvideResponseAsync(RequestMessage requestMessage) { return Task.FromResult(_responseMessageFunc(requestMessage)); } } internal class DynamicAsyncResponseProvider : IResponseProvider { private readonly Func> _responseMessageFunc; public DynamicAsyncResponseProvider([NotNull] Func> responseMessageFunc) { Check.NotNull(responseMessageFunc, nameof(responseMessageFunc)); _responseMessageFunc = responseMessageFunc; } public Task ProvideResponseAsync(RequestMessage requestMessage) { return _responseMessageFunc(requestMessage); } } internal class ProxyAsyncResponseProvider : IResponseProvider { private readonly Func> _responseMessageFunc; private readonly ProxyAndRecordSettings _settings; public ProxyAsyncResponseProvider([NotNull] Func> responseMessageFunc, [NotNull] ProxyAndRecordSettings settings) { Check.NotNull(responseMessageFunc, nameof(responseMessageFunc)); Check.NotNull(settings, nameof(settings)); _responseMessageFunc = responseMessageFunc; _settings = settings; } public Task ProvideResponseAsync(RequestMessage requestMessage) { return _responseMessageFunc(requestMessage, _settings); } } }