mirror of
https://github.com/wiremock/WireMock.Net.git
synced 2026-03-26 19:11:04 +01:00
* WireMock.Net.Testcontainers: implement watching the static mapping files + folder for changes * ReloadStaticMappings * fix * . * . * . * . * . * . * . * CopyAsync * <VersionPrefix>1.6.7-preview-02</VersionPrefix> * <VersionPrefix>1.6.7-preview-03</VersionPrefix>
41 lines
1.4 KiB
C#
41 lines
1.4 KiB
C#
// Copyright © WireMock.Net
|
|
|
|
using Aspire.Hosting.ApplicationModel;
|
|
using Aspire.Hosting.Lifecycle;
|
|
using Microsoft.Extensions.Logging;
|
|
|
|
namespace WireMock.Net.Aspire;
|
|
|
|
internal class WireMockServerLifecycleHook(ILoggerFactory loggerFactory) : IDistributedApplicationLifecycleHook, IAsyncDisposable
|
|
{
|
|
private readonly CancellationTokenSource _shutdownCts = new();
|
|
|
|
public async Task AfterResourcesCreatedAsync(DistributedApplicationModel appModel, CancellationToken cancellationToken = default)
|
|
{
|
|
var cts = CancellationTokenSource.CreateLinkedTokenSource(_shutdownCts.Token, cancellationToken);
|
|
|
|
var wireMockServerResources = appModel.Resources
|
|
.OfType<WireMockServerResource>()
|
|
.ToArray();
|
|
|
|
foreach (var wireMockServerResource in wireMockServerResources)
|
|
{
|
|
wireMockServerResource.SetLogger(loggerFactory.CreateLogger<WireMockServerResource>());
|
|
|
|
var endpoint = wireMockServerResource.GetEndpoint();
|
|
if (endpoint.IsAllocated)
|
|
{
|
|
await wireMockServerResource.WaitForHealthAsync(cts.Token);
|
|
|
|
await wireMockServerResource.CallApiMappingBuilderActionAsync(cts.Token);
|
|
|
|
wireMockServerResource.StartWatchingStaticMappings(cts.Token);
|
|
}
|
|
}
|
|
}
|
|
|
|
public async ValueTask DisposeAsync()
|
|
{
|
|
await _shutdownCts.CancelAsync();
|
|
}
|
|
} |