Bruce Wayne 4 anos atrás
pai
commit
da3f7ee0e6

+ 2 - 2
NatTypeTester.ViewModels/FodyWeavers.xml

@@ -1,3 +1,3 @@
-<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
+<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
   <ReactiveUI />
-</Weavers>
+</Weavers>

+ 35 - 53
NatTypeTester.ViewModels/MainWindowViewModel.cs

@@ -124,69 +124,51 @@ namespace NatTypeTester.ViewModels
 
 		private async Task TestClassicNatTypeImpl(CancellationToken token)
 		{
-			try
+			var server = new StunServer();
+			if (!server.Parse(StunServer))
 			{
-				var server = new StunServer();
-				if (server.Parse(StunServer))
-				{
-					using var proxy = ProxyFactory.CreateProxy(
-						ProxyType,
-						Result3489.LocalEndPoint,
-						NetUtils.ParseEndpoint(ProxyServer),
-						ProxyUser, ProxyPassword
-						);
+				throw new Exception(@"Wrong STUN Server!");
+			}
 
-					using var client = new StunClient3489(server.Hostname, server.Port, Result3489.LocalEndPoint, proxy);
+			using var proxy = ProxyFactory.CreateProxy(
+					ProxyType,
+					Result3489.LocalEndPoint,
+					NetUtils.ParseEndpoint(ProxyServer),
+					ProxyUser, ProxyPassword
+			);
 
-					Result3489 = client.Status;
-					await client.Query3489Async();
+			using var client = new StunClient3489(server.Hostname, server.Port, Result3489.LocalEndPoint, proxy);
 
-					Result3489.LocalEndPoint = client.LocalEndPoint;
-				}
-				else
-				{
-					throw new Exception(@"Wrong STUN Server!");
-				}
-			}
-			catch (Exception ex)
-			{
-				//TODO MessageBox.Show(ex.Message, nameof(NatTypeTester), MessageBoxButton.OK, MessageBoxImage.Error);
-			}
+			Result3489 = client.Status;
+			await client.Query3489Async();
+
+			Result3489.LocalEndPoint = client.LocalEndPoint;
 		}
 
 		private async Task DiscoveryNatTypeImpl(CancellationToken token)
 		{
-			try
+			var server = new StunServer();
+			if (!server.Parse(StunServer))
 			{
-				var server = new StunServer();
-				if (server.Parse(StunServer))
-				{
-					using var proxy = ProxyFactory.CreateProxy(
-						ProxyType,
-						Result5389.LocalEndPoint,
-						NetUtils.ParseEndpoint(ProxyServer),
-						ProxyUser, ProxyPassword
-						);
-
-					using var client = new StunClient5389UDP(server.Hostname, server.Port, Result5389.LocalEndPoint, proxy);
-
-					Result5389 = client.Status;
-					await client.QueryAsync();
-
-					var cache = new StunResult5389();
-					cache.Clone(client.Status);
-					cache.LocalEndPoint = client.LocalEndPoint;
-					Result5389 = cache;
-				}
-				else
-				{
-					throw new Exception(@"Wrong STUN Server!");
-				}
-			}
-			catch (Exception ex)
-			{
-				//TODO MessageBox.Show(ex.Message, nameof(NatTypeTester), MessageBoxButton.OK, MessageBoxImage.Error);
+				throw new Exception(@"Wrong STUN Server!");
 			}
+
+			using var proxy = ProxyFactory.CreateProxy(
+					ProxyType,
+					Result5389.LocalEndPoint,
+					NetUtils.ParseEndpoint(ProxyServer),
+					ProxyUser, ProxyPassword
+			);
+
+			using var client = new StunClient5389UDP(server.Hostname, server.Port, Result5389.LocalEndPoint, proxy);
+
+			Result5389 = client.Status;
+			await client.QueryAsync();
+
+			var cache = new StunResult5389();
+			cache.Clone(client.Status);
+			cache.LocalEndPoint = client.LocalEndPoint;
+			Result5389 = cache;
 		}
 	}
 }

+ 13 - 0
NatTypeTester/Dialogs/DisposableContentDialog.cs

@@ -0,0 +1,13 @@
+using ModernWpf.Controls;
+using System;
+
+namespace NatTypeTester.Dialogs
+{
+	public class DisposableContentDialog : ContentDialog, IDisposable
+	{
+		public void Dispose()
+		{
+			Hide();
+		}
+	}
+}

+ 17 - 0
NatTypeTester/MainWindow.xaml.cs

@@ -1,4 +1,5 @@
 using ModernWpf;
+using NatTypeTester.Dialogs;
 using NatTypeTester.ViewModels;
 using ReactiveUI;
 using STUN.Enums;
@@ -6,6 +7,7 @@ using STUN.Utils;
 using System;
 using System.Reactive.Disposables;
 using System.Reactive.Linq;
+using System.Threading.Tasks;
 using System.Windows;
 using System.Windows.Input;
 
@@ -96,6 +98,8 @@ namespace NatTypeTester
 						.Subscribe(async _ => await ViewModel.TestClassicNatType.Execute(default))
 						.DisposeWith(d);
 
+				ViewModel.TestClassicNatType.ThrownExceptions.Subscribe(async ex => await HandleExceptionAsync(ex)).DisposeWith(d);
+
 				#endregion
 
 				#region RFC5780
@@ -138,8 +142,21 @@ namespace NatTypeTester
 						.Subscribe(async _ => await ViewModel.DiscoveryNatType.Execute(default))
 						.DisposeWith(d);
 
+				ViewModel.DiscoveryNatType.ThrownExceptions.Subscribe(async ex => await HandleExceptionAsync(ex)).DisposeWith(d);
+
 				#endregion
 			});
 		}
+
+		private static async Task HandleExceptionAsync(Exception ex)
+		{
+			using var dialog = new DisposableContentDialog
+			{
+				Title = nameof(NatTypeTester),
+				Content = ex.Message,
+				PrimaryButtonText = @"OK"
+			};
+			await dialog.ShowAsync();
+		}
 	}
 }

+ 0 - 1
NatTypeTester/NatTypeTester.csproj

@@ -25,7 +25,6 @@
     </PackageReference>
     <PackageReference Include="ModernWpfUI" Version="0.9.3" />
     <PackageReference Include="ReactiveUI.Events.WPF" Version="13.0.38" />
-    <PackageReference Include="ReactiveUI.Fody" Version="13.0.38" />
     <PackageReference Include="ReactiveUI.WPF" Version="13.0.38" />
   </ItemGroup>