From 2e4db7554041ecf481d3a38656fccc309e13eb5b Mon Sep 17 00:00:00 2001 From: LukePulverenti Date: Sat, 23 Feb 2013 17:31:51 -0500 Subject: extracted http server, web socket server and udp server dependancies --- .../Management/NetworkManager.cs | 112 ++ .../MediaBrowser.Networking.csproj | 86 ++ MediaBrowser.Networking/README.txt | 41 + MediaBrowser.Networking/Udp/UdpServer.cs | 167 +++ MediaBrowser.Networking/Web/HttpServer.cs | 537 ++++++++ MediaBrowser.Networking/WebSocket/AlchemyServer.cs | 105 ++ .../WebSocket/AlchemyWebSocket.cs | 133 ++ MediaBrowser.Networking/packages.config | 15 + MediaBrowser.Networking/swagger-ui/css/screen.css | 959 ++++++++++++++ .../swagger-ui/images/pet_store_api.png | Bin 0 -> 824 bytes .../swagger-ui/images/wordnik_api.png | Bin 0 -> 980 bytes MediaBrowser.Networking/swagger-ui/index.html | 88 ++ .../swagger-ui/lib/backbone-min.js | 38 + .../lib/handlebars.runtime-1.0.0.beta.6.js | 223 ++++ .../swagger-ui/lib/jquery.ba-bbq.min.js | 18 + .../swagger-ui/lib/jquery.min.js | 4 + .../swagger-ui/lib/jquery.slideto.min.js | 1 + .../swagger-ui/lib/jquery.wiggle.min.js | 8 + MediaBrowser.Networking/swagger-ui/lib/swagger.js | 507 ++++++++ .../swagger-ui/lib/underscore-min.js | 32 + MediaBrowser.Networking/swagger-ui/swagger-ui.js | 1309 ++++++++++++++++++++ .../swagger-ui/swagger-ui.min.js | 1 + 22 files changed, 4384 insertions(+) create mode 100644 MediaBrowser.Networking/README.txt create mode 100644 MediaBrowser.Networking/Udp/UdpServer.cs create mode 100644 MediaBrowser.Networking/Web/HttpServer.cs create mode 100644 MediaBrowser.Networking/WebSocket/AlchemyServer.cs create mode 100644 MediaBrowser.Networking/WebSocket/AlchemyWebSocket.cs create mode 100644 MediaBrowser.Networking/packages.config create mode 100644 MediaBrowser.Networking/swagger-ui/css/screen.css create mode 100644 MediaBrowser.Networking/swagger-ui/images/pet_store_api.png create mode 100644 MediaBrowser.Networking/swagger-ui/images/wordnik_api.png create mode 100644 MediaBrowser.Networking/swagger-ui/index.html create mode 100644 MediaBrowser.Networking/swagger-ui/lib/backbone-min.js create mode 100644 MediaBrowser.Networking/swagger-ui/lib/handlebars.runtime-1.0.0.beta.6.js create mode 100644 MediaBrowser.Networking/swagger-ui/lib/jquery.ba-bbq.min.js create mode 100644 MediaBrowser.Networking/swagger-ui/lib/jquery.min.js create mode 100644 MediaBrowser.Networking/swagger-ui/lib/jquery.slideto.min.js create mode 100644 MediaBrowser.Networking/swagger-ui/lib/jquery.wiggle.min.js create mode 100644 MediaBrowser.Networking/swagger-ui/lib/swagger.js create mode 100644 MediaBrowser.Networking/swagger-ui/lib/underscore-min.js create mode 100644 MediaBrowser.Networking/swagger-ui/swagger-ui.js create mode 100644 MediaBrowser.Networking/swagger-ui/swagger-ui.min.js (limited to 'MediaBrowser.Networking') diff --git a/MediaBrowser.Networking/Management/NetworkManager.cs b/MediaBrowser.Networking/Management/NetworkManager.cs index fcead43d3..208c64a6e 100644 --- a/MediaBrowser.Networking/Management/NetworkManager.cs +++ b/MediaBrowser.Networking/Management/NetworkManager.cs @@ -260,6 +260,118 @@ namespace MediaBrowser.Networking.Management throw new ArgumentException("Unknown share type"); } } + + /// + /// Parses the specified endpointstring. + /// + /// The endpointstring. + /// IPEndPoint. + public IPEndPoint Parse(string endpointstring) + { + return Parse(endpointstring, -1); + } + + /// + /// Parses the specified endpointstring. + /// + /// The endpointstring. + /// The defaultport. + /// IPEndPoint. + /// Endpoint descriptor may not be empty. + /// + private static IPEndPoint Parse(string endpointstring, int defaultport) + { + if (string.IsNullOrEmpty(endpointstring) + || endpointstring.Trim().Length == 0) + { + throw new ArgumentException("Endpoint descriptor may not be empty."); + } + + if (defaultport != -1 && + (defaultport < IPEndPoint.MinPort + || defaultport > IPEndPoint.MaxPort)) + { + throw new ArgumentException(string.Format("Invalid default port '{0}'", defaultport)); + } + + string[] values = endpointstring.Split(new char[] { ':' }); + IPAddress ipaddy; + int port = -1; + + //check if we have an IPv6 or ports + if (values.Length <= 2) // ipv4 or hostname + { + if (values.Length == 1) + //no port is specified, default + port = defaultport; + else + port = GetPort(values[1]); + + //try to use the address as IPv4, otherwise get hostname + if (!IPAddress.TryParse(values[0], out ipaddy)) + ipaddy = GetIPfromHost(values[0]); + } + else if (values.Length > 2) //ipv6 + { + //could [a:b:c]:d + if (values[0].StartsWith("[") && values[values.Length - 2].EndsWith("]")) + { + string ipaddressstring = string.Join(":", values.Take(values.Length - 1).ToArray()); + ipaddy = IPAddress.Parse(ipaddressstring); + port = GetPort(values[values.Length - 1]); + } + else //[a:b:c] or a:b:c + { + ipaddy = IPAddress.Parse(endpointstring); + port = defaultport; + } + } + else + { + throw new FormatException(string.Format("Invalid endpoint ipaddress '{0}'", endpointstring)); + } + + if (port == -1) + throw new ArgumentException(string.Format("No port specified: '{0}'", endpointstring)); + + return new IPEndPoint(ipaddy, port); + } + + /// + /// Gets the port. + /// + /// The p. + /// System.Int32. + /// + private static int GetPort(string p) + { + int port; + + if (!int.TryParse(p, out port) + || port < IPEndPoint.MinPort + || port > IPEndPoint.MaxPort) + { + throw new FormatException(string.Format("Invalid end point port '{0}'", p)); + } + + return port; + } + + /// + /// Gets the I pfrom host. + /// + /// The p. + /// IPAddress. + /// + private static IPAddress GetIPfromHost(string p) + { + var hosts = Dns.GetHostAddresses(p); + + if (hosts == null || hosts.Length == 0) + throw new ArgumentException(string.Format("Host not found: {0}", p)); + + return hosts[0]; + } } } diff --git a/MediaBrowser.Networking/MediaBrowser.Networking.csproj b/MediaBrowser.Networking/MediaBrowser.Networking.csproj index 194f9e400..7e4a0b160 100644 --- a/MediaBrowser.Networking/MediaBrowser.Networking.csproj +++ b/MediaBrowser.Networking/MediaBrowser.Networking.csproj @@ -11,6 +11,8 @@ MediaBrowser.Networking v4.5 512 + ..\ + true true @@ -30,9 +32,68 @@ 4 + + False + ..\packages\Alchemy.2.2.1\lib\net40\Alchemy.dll + + + False + ..\packages\NLog.2.0.0.2000\lib\net40\NLog.dll + + + False + ..\packages\ServiceStack.3.9.37\lib\net35\ServiceStack.dll + + + False + ..\packages\ServiceStack.Api.Swagger.3.9.35\lib\net35\ServiceStack.Api.Swagger.dll + + + False + ..\packages\ServiceStack.Common.3.9.37\lib\net35\ServiceStack.Common.dll + + + False + ..\packages\ServiceStack.Common.3.9.37\lib\net35\ServiceStack.Interfaces.dll + + + False + ..\packages\ServiceStack.Logging.NLog.1.0.6.0\lib\net35\ServiceStack.Logging.NLog.dll + + + False + ..\packages\ServiceStack.OrmLite.SqlServer.3.9.37\lib\ServiceStack.OrmLite.dll + + + ..\packages\ServiceStack.OrmLite.SqlServer.3.9.37\lib\ServiceStack.OrmLite.SqlServer.dll + + + ..\packages\ServiceStack.Redis.3.9.37\lib\net35\ServiceStack.Redis.dll + + + False + ..\packages\ServiceStack.3.9.37\lib\net35\ServiceStack.ServiceInterface.dll + + + False + ..\packages\ServiceStack.Text.3.9.37\lib\net35\ServiceStack.Text.dll + + + False + ..\packages\Rx-Core.2.0.21114\lib\Net45\System.Reactive.Core.dll + + + False + ..\packages\Rx-Interfaces.2.0.21114\lib\Net45\System.Reactive.Interfaces.dll + + + False + ..\packages\Rx-Linq.2.0.21114\lib\Net45\System.Reactive.Linq.dll + + @@ -43,6 +104,10 @@ Properties\SharedVersion.cs + + + + @@ -58,10 +123,31 @@ MediaBrowser.Model + + + + + + + + + + + + + + + + + + + + xcopy "$(TargetPath)" "$(SolutionDir)\Nuget\dlls\" /y /d /r /i +