aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2015-03-14 02:10:22 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2015-03-14 02:10:22 -0400
commit26c0b263664541a4b2d606fb0a347bfdef49db7c (patch)
tree061dbf8fcf8398940bcaaa517359595454458748
parentdbb7fd61ff0545f8ebf7b9ece432f1408d43040c (diff)
updated nuget
-rw-r--r--MediaBrowser.Model/Dlna/DefaultLocalPlayer.cs82
-rw-r--r--MediaBrowser.Server.Implementations/Library/UserManager.cs3
-rw-r--r--Nuget/MediaBrowser.Common.Internal.nuspec4
-rw-r--r--Nuget/MediaBrowser.Common.nuspec2
-rw-r--r--Nuget/MediaBrowser.Model.Signed.nuspec2
-rw-r--r--Nuget/MediaBrowser.Server.Core.nuspec4
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>