using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using Stef.Validation; using WireMock.Admin.Mappings; namespace WireMock.Client.Builders; /// /// AdminApiMappingBuilder /// public class AdminApiMappingBuilder { private readonly List> _mappingModelBuilderActions = new(); private readonly IWireMockAdminApi _api; /// /// AdminApiMappingBuilder /// /// The . public AdminApiMappingBuilder(IWireMockAdminApi api) { _api = Guard.NotNull(api); } /// /// The Given /// /// The action. public void Given(Action mappingModelBuilderAction) { _mappingModelBuilderActions.Add(Guard.NotNull(mappingModelBuilderAction)); } /// /// Build the mappings and post these using the to the WireMock.Net server. /// /// The optional CancellationToken. /// public Task BuildAndPostAsync(CancellationToken cancellationToken = default) { var modelMappings = new List(); foreach (var mappingModelBuilderAction in _mappingModelBuilderActions) { cancellationToken.ThrowIfCancellationRequested(); var mappingModelBuilder = new MappingModelBuilder(); mappingModelBuilderAction(mappingModelBuilder); modelMappings.Add(mappingModelBuilder.Build()); } return _api.PostMappingsAsync(modelMappings, cancellationToken); } }