diff --git a/src/WireMock.Net.Extensions.WireMockInspector/WireMockServerExtensions.cs b/src/WireMock.Net.Extensions.WireMockInspector/WireMockServerExtensions.cs index da2a463..b42fad0 100644 --- a/src/WireMock.Net.Extensions.WireMockInspector/WireMockServerExtensions.cs +++ b/src/WireMock.Net.Extensions.WireMockInspector/WireMockServerExtensions.cs @@ -13,7 +13,7 @@ public static class WireMockServerExtensions /// /// The current thread will be blocked until WireMockInspector process exits. /// - public static void Inspect(this IWireMockServer wireMock, [CallerMemberName] string title = "") + public static void Inspect(this IWireMockServer wireMock, [CallerMemberName] string title = "", string requestFilters = "") { if (wireMock.IsStarted == false) throw new InvalidOperationException("WireMock server is not started"); @@ -21,20 +21,27 @@ public static void Inspect(this IWireMockServer wireMock, [CallerMemberName] str if (wireMock.IsStartedWithAdminInterface == false) throw new InvalidOperationException("WireMock service is not started with Admin interface"); - Inspect(wireMock.Url!, title); + Inspect(wireMock.Url!, title, requestFilters); } /// /// Run WireMockInspector dotnet tool and attach it to existing WireMockServer listening under given url /// - public static void Inspect(string wireMockUrl, [CallerMemberName] string title = "") + public static void Inspect(string wireMockUrl, [CallerMemberName] string title = "", string requestFilters = "") { + //request.header.traceparent:*0fd18063ed68b122d3e659ecbb4e6f0d* try { + var arguments = $"attach --adminUrl {wireMockUrl} --autoLoad --instanceName \"{title}\""; + if (string.IsNullOrWhiteSpace(requestFilters) == false) + { + arguments += $" --requestFilters \"{requestFilters}\""; + } + var inspectorProcess = Process.Start(new ProcessStartInfo { FileName = "wiremockinspector", - Arguments = $"attach --adminUrl {wireMockUrl} --autoLoad --instanceName \"{title}\"", + Arguments = arguments, UseShellExecute = false }); diff --git a/src/WireMockInspector/App.axaml.cs b/src/WireMockInspector/App.axaml.cs index 70cc2b9..a5b79b2 100644 --- a/src/WireMockInspector/App.axaml.cs +++ b/src/WireMockInspector/App.axaml.cs @@ -36,16 +36,20 @@ public override void OnFrameworkInitializationCompleted() attachCommand.AddOption(autoLoadOption); var instanceNameOption = new Option("--instanceName") { IsRequired = false }; attachCommand.AddOption(instanceNameOption); + + var requestFiltersOption = new Option("--requestFilters") { IsRequired = false }; + attachCommand.AddOption(requestFiltersOption); - attachCommand.SetHandler((adminUrl, autoLoad, instanceName) => + attachCommand.SetHandler((adminUrl, autoLoad, instanceName, requestFilters) => { mainWindow.Settings = new StartupSettings { AdminUrl = adminUrl, InstanceName = instanceName, - AutoLoad = autoLoad + AutoLoad = autoLoad, + RequestFilters = requestFilters }; - }, adminUrlOption, autoLoadOption, instanceNameOption); + }, adminUrlOption, autoLoadOption, instanceNameOption, requestFiltersOption); rootCommand.AddCommand(attachCommand); rootCommand.SetHandler(() => { }); rootCommand.Invoke(args); @@ -63,5 +67,6 @@ public class StartupSettings public string AdminUrl { get; set; } public bool AutoLoad { get; set; } public string InstanceName { get; set; } + public string RequestFilters { get; set; } } } \ No newline at end of file diff --git a/src/WireMockInspector/Views/MainWindow.axaml.cs b/src/WireMockInspector/Views/MainWindow.axaml.cs index db21319..9e3b369 100644 --- a/src/WireMockInspector/Views/MainWindow.axaml.cs +++ b/src/WireMockInspector/Views/MainWindow.axaml.cs @@ -49,9 +49,13 @@ public MainWindow() if (Settings != null) { ViewModel.AdminUrl = Settings.AdminUrl; + if (Settings.AutoLoad) { - ViewModel.LoadRequestsCommand.Execute().Subscribe().DisposeWith(disposables); + ViewModel.LoadRequestsCommand.Execute().ObserveOn(RxApp.MainThreadScheduler).Subscribe(_ => + { + ViewModel.RequestSearchTerm = Settings.RequestFilters; + }).DisposeWith(disposables); } if (string.IsNullOrWhiteSpace(Settings.InstanceName) == false)