diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-03-14 02:10:22 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-03-14 02:10:22 -0400 |
| commit | 26c0b263664541a4b2d606fb0a347bfdef49db7c (patch) | |
| tree | 061dbf8fcf8398940bcaaa517359595454458748 | |
| parent | dbb7fd61ff0545f8ebf7b9ece432f1408d43040c (diff) | |
updated nuget
| -rw-r--r-- | MediaBrowser.Model/Dlna/DefaultLocalPlayer.cs | 82 | ||||
| -rw-r--r-- | MediaBrowser.Server.Implementations/Library/UserManager.cs | 3 | ||||
| -rw-r--r-- | Nuget/MediaBrowser.Common.Internal.nuspec | 4 | ||||
| -rw-r--r-- | Nuget/MediaBrowser.Common.nuspec | 2 | ||||
| -rw-r--r-- | Nuget/MediaBrowser.Model.Signed.nuspec | 2 | ||||
| -rw-r--r-- | Nuget/MediaBrowser.Server.Core.nuspec | 4 |
6 files changed, 88 insertions, 9 deletions
diff --git a/MediaBrowser.Model/Dlna/DefaultLocalPlayer.cs b/MediaBrowser.Model/Dlna/DefaultLocalPlayer.cs index fc15a55a0..4092046e2 100644 --- a/MediaBrowser.Model/Dlna/DefaultLocalPlayer.cs +++ b/MediaBrowser.Model/Dlna/DefaultLocalPlayer.cs @@ -1,4 +1,7 @@ -using System.IO; +using System; +using System.Collections.Generic; +using System.IO; +using System.Net; namespace MediaBrowser.Model.Dlna { @@ -16,7 +19,82 @@ namespace MediaBrowser.Model.Dlna public virtual bool CanAccessUrl(string url, bool requiresCustomRequestHeaders) { - return false; + if (requiresCustomRequestHeaders) + { + return false; + } + + return CanAccessUrl(url); + } + + private readonly Dictionary<string, TestResult> _results = new Dictionary<string, TestResult>(StringComparer.OrdinalIgnoreCase); + private readonly object _resultLock = new object(); + + private bool CanAccessUrl(string url) + { + var key = GetHostFromUrl(url); + lock (_resultLock) + { + TestResult result; + if (_results.TryGetValue(url, out result)) + { + var timespan = DateTime.UtcNow - result.Date; + if (timespan <= TimeSpan.FromMinutes(3)) + { + return result.Success; + } + } + } + + var canAccess = CanAccessUrlInternal(url); + lock (_resultLock) + { + _results[key] = new TestResult + { + Success = canAccess, + Date = DateTime.UtcNow + }; + } + return canAccess; + } + + private bool CanAccessUrlInternal(string url) + { + HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); + request.Timeout = 5000; + request.Method = "HEAD"; + try + { + using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) + { + return response.StatusCode == HttpStatusCode.OK; + } + } + catch (WebException) + { + return false; + } + } + + protected void ClearUrlTestResultCache() + { + lock (_resultLock) + { + _results.Clear(); + } + } + + private string GetHostFromUrl(string url) + { + var start = url.IndexOf("://", StringComparison.OrdinalIgnoreCase) + 3; + var len = url.IndexOf('/', start) - start; + return url.Substring(start, len); + } + + private class TestResult + { + public bool Success; + public DateTime Date; } } } diff --git a/MediaBrowser.Server.Implementations/Library/UserManager.cs b/MediaBrowser.Server.Implementations/Library/UserManager.cs index c50a71556..6e6e23a5a 100644 --- a/MediaBrowser.Server.Implementations/Library/UserManager.cs +++ b/MediaBrowser.Server.Implementations/Library/UserManager.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Common.Events; +using System.Net.NetworkInformation; +using MediaBrowser.Common.Events; using MediaBrowser.Common.Extensions; using MediaBrowser.Common.IO; using MediaBrowser.Common.Net; diff --git a/Nuget/MediaBrowser.Common.Internal.nuspec b/Nuget/MediaBrowser.Common.Internal.nuspec index 6b4ad7db7..429975c90 100644 --- a/Nuget/MediaBrowser.Common.Internal.nuspec +++ b/Nuget/MediaBrowser.Common.Internal.nuspec @@ -2,7 +2,7 @@ <package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd"> <metadata> <id>MediaBrowser.Common.Internal</id> - <version>3.0.587</version> + <version>3.0.588</version> <title>MediaBrowser.Common.Internal</title> <authors>Luke</authors> <owners>ebr,Luke,scottisafool</owners> @@ -12,7 +12,7 @@ <description>Contains common components shared by Media Browser Theater and Media Browser Server. Not intended for plugin developer consumption.</description> <copyright>Copyright © Media Browser 2013</copyright> <dependencies> - <dependency id="MediaBrowser.Common" version="3.0.587" /> + <dependency id="MediaBrowser.Common" version="3.0.588" /> <dependency id="NLog" version="3.2.0.0" /> <dependency id="SimpleInjector" version="2.7.0" /> </dependencies> diff --git a/Nuget/MediaBrowser.Common.nuspec b/Nuget/MediaBrowser.Common.nuspec index 0ea9e9aa9..c43cec3a9 100644 --- a/Nuget/MediaBrowser.Common.nuspec +++ b/Nuget/MediaBrowser.Common.nuspec @@ -2,7 +2,7 @@ <package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd"> <metadata> <id>MediaBrowser.Common</id> - <version>3.0.587</version> + <version>3.0.588</version> <title>MediaBrowser.Common</title> <authors>Media Browser Team</authors> <owners>ebr,Luke,scottisafool</owners> diff --git a/Nuget/MediaBrowser.Model.Signed.nuspec b/Nuget/MediaBrowser.Model.Signed.nuspec index d77f0fc06..0683c07db 100644 --- a/Nuget/MediaBrowser.Model.Signed.nuspec +++ b/Nuget/MediaBrowser.Model.Signed.nuspec @@ -2,7 +2,7 @@ <package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd"> <metadata> <id>MediaBrowser.Model.Signed</id> - <version>3.0.587</version> + <version>3.0.588</version> <title>MediaBrowser.Model - Signed Edition</title> <authors>Media Browser Team</authors> <owners>ebr,Luke,scottisafool</owners> diff --git a/Nuget/MediaBrowser.Server.Core.nuspec b/Nuget/MediaBrowser.Server.Core.nuspec index 9a1a7d068..56fc086a8 100644 --- a/Nuget/MediaBrowser.Server.Core.nuspec +++ b/Nuget/MediaBrowser.Server.Core.nuspec @@ -2,7 +2,7 @@ <package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"> <metadata> <id>MediaBrowser.Server.Core</id> - <version>3.0.587</version> + <version>3.0.588</version> <title>Media Browser.Server.Core</title> <authors>Media Browser Team</authors> <owners>ebr,Luke,scottisafool</owners> @@ -12,7 +12,7 @@ <description>Contains core components required to build plugins for Media Browser Server.</description> <copyright>Copyright © Media Browser 2013</copyright> <dependencies> - <dependency id="MediaBrowser.Common" version="3.0.587" /> + <dependency id="MediaBrowser.Common" version="3.0.588" /> </dependencies> </metadata> <files> |
