aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2015-10-15 11:51:00 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2015-10-15 11:51:00 -0400
commitf4ad65196a255457bdd4fed645a50ed009669549 (patch)
treea41c413067039ab6268557e8c2dab26994f42776
parent6c3355b26f1075863b294fb2049f62b3293558c4 (diff)
update playlist drag and drop
-rw-r--r--MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs89
-rw-r--r--MediaBrowser.Controller/Entities/ItemImageInfo.cs10
-rw-r--r--MediaBrowser.Server.Implementations/Dto/DtoService.cs2
-rw-r--r--MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs10
-rw-r--r--MediaBrowser.Server.Implementations/Playlists/PlaylistManager.cs14
-rw-r--r--MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs5
6 files changed, 73 insertions, 57 deletions
diff --git a/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs b/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs
index 2578602a1..c54c0a873 100644
--- a/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs
+++ b/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs
@@ -356,7 +356,7 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
private async Task CacheResponse(HttpResponseInfo response, string responseCachePath)
{
- _fileSystem.CreateDirectory(Path.GetDirectoryName(responseCachePath));
+ _fileSystem.CreateDirectory(Path.GetDirectoryName(responseCachePath));
using (var responseStream = response.Content)
{
@@ -465,20 +465,11 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
}
catch (OperationCanceledException ex)
{
- var exception = GetCancellationException(options, options.CancellationToken, ex);
-
- var httpException = exception as HttpException;
-
- if (httpException != null && httpException.IsTimedOut)
- {
- client.LastTimeout = DateTime.UtcNow;
- }
-
- throw exception;
+ throw GetCancellationException(options, client, options.CancellationToken, ex);
}
catch (Exception ex)
{
- throw GetException(ex, options);
+ throw GetException(ex, options, client);
}
finally
{
@@ -489,30 +480,6 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
}
}
- /// <summary>
- /// Gets the exception.
- /// </summary>
- /// <param name="ex">The ex.</param>
- /// <param name="options">The options.</param>
- /// <returns>HttpException.</returns>
- private HttpException GetException(WebException ex, HttpRequestOptions options)
- {
- if (options.LogErrors)
- {
- _logger.ErrorException("Error getting response from " + options.Url, ex);
- }
-
- var exception = new HttpException(ex.Message, ex);
-
- var response = ex.Response as HttpWebResponse;
- if (response != null)
- {
- exception.StatusCode = response.StatusCode;
- }
-
- return exception;
- }
-
private HttpResponseInfo GetResponseInfo(HttpWebResponse httpResponse, Stream content, long? contentLength, IDisposable disposable)
{
return new HttpResponseInfo(disposable)
@@ -603,7 +570,7 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
{
ValidateParams(options);
- _fileSystem.CreateDirectory(_appPaths.TempDirectory);
+ _fileSystem.CreateDirectory(_appPaths.TempDirectory);
var tempFile = Path.Combine(_appPaths.TempDirectory, Guid.NewGuid() + ".tmp");
@@ -628,6 +595,8 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
_logger.Info("HttpClientManager.GetTempFileResponse url: {0}", options.Url);
}
+ var client = GetHttpClient(GetHostFromUrl(options.Url), options.EnableHttpCompression);
+
try
{
options.CancellationToken.ThrowIfCancellationRequested();
@@ -636,7 +605,6 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
{
var httpResponse = (HttpWebResponse)response;
- var client = GetHttpClient(GetHostFromUrl(options.Url), options.EnableHttpCompression);
EnsureSuccessStatusCode(client, httpResponse, options);
options.CancellationToken.ThrowIfCancellationRequested();
@@ -673,7 +641,7 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
catch (Exception ex)
{
DeleteTempFile(tempFile);
- throw GetException(ex, options);
+ throw GetException(ex, options, client);
}
finally
{
@@ -698,14 +666,37 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
protected static readonly CultureInfo UsCulture = new CultureInfo("en-US");
- private Exception GetException(Exception ex, HttpRequestOptions options)
+ private Exception GetException(Exception ex, HttpRequestOptions options, HttpClientInfo client)
{
+ if (ex is HttpException)
+ {
+ return ex;
+ }
+
var webException = ex as WebException
?? ex.InnerException as WebException;
if (webException != null)
{
- return GetException(webException, options);
+ if (options.LogErrors)
+ {
+ _logger.ErrorException("Error getting response from " + options.Url, ex);
+ }
+
+ var exception = new HttpException(ex.Message, ex);
+
+ var response = webException.Response as HttpWebResponse;
+ if (response != null)
+ {
+ exception.StatusCode = response.StatusCode;
+
+ if ((int)response.StatusCode == 429)
+ {
+ client.LastTimeout = DateTime.UtcNow;
+ }
+ }
+
+ return exception;
}
var operationCanceledException = ex as OperationCanceledException
@@ -713,7 +704,7 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
if (operationCanceledException != null)
{
- return GetCancellationException(options, options.CancellationToken, operationCanceledException);
+ return GetCancellationException(options, client, options.CancellationToken, operationCanceledException);
}
if (options.LogErrors)
@@ -792,10 +783,11 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
/// Throws the cancellation exception.
/// </summary>
/// <param name="options">The options.</param>
+ /// <param name="client">The client.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <param name="exception">The exception.</param>
/// <returns>Exception.</returns>
- private Exception GetCancellationException(HttpRequestOptions options, CancellationToken cancellationToken, OperationCanceledException exception)
+ private Exception GetCancellationException(HttpRequestOptions options, HttpClientInfo client, CancellationToken cancellationToken, OperationCanceledException exception)
{
// If the HttpClient's timeout is reached, it will cancel the Task internally
if (!cancellationToken.IsCancellationRequested)
@@ -807,6 +799,8 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
_logger.Error(msg);
}
+ client.LastTimeout = DateTime.UtcNow;
+
// Throw an HttpException so that the caller doesn't think it was cancelled by user code
return new HttpException(msg, exception)
{
@@ -825,15 +819,6 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
if (!isSuccessful)
{
- if ((int) statusCode == 429)
- {
- throw new HttpException(response.StatusDescription)
- {
- IsTimedOut = true
- };
- }
-
- if (statusCode == HttpStatusCode.RequestEntityTooLarge)
if (options.LogErrorResponseBody)
{
try
diff --git a/MediaBrowser.Controller/Entities/ItemImageInfo.cs b/MediaBrowser.Controller/Entities/ItemImageInfo.cs
index b36b818ff..9f3074c5e 100644
--- a/MediaBrowser.Controller/Entities/ItemImageInfo.cs
+++ b/MediaBrowser.Controller/Entities/ItemImageInfo.cs
@@ -1,5 +1,6 @@
using MediaBrowser.Model.Entities;
using System;
+using System.Runtime.Serialization;
namespace MediaBrowser.Controller.Entities
{
@@ -22,5 +23,14 @@ namespace MediaBrowser.Controller.Entities
/// </summary>
/// <value>The date modified.</value>
public DateTime DateModified { get; set; }
+
+ [IgnoreDataMember]
+ public bool IsLocalFile
+ {
+ get
+ {
+ return true;
+ }
+ }
}
}
diff --git a/MediaBrowser.Server.Implementations/Dto/DtoService.cs b/MediaBrowser.Server.Implementations/Dto/DtoService.cs
index a880914a3..5c0b5e5b2 100644
--- a/MediaBrowser.Server.Implementations/Dto/DtoService.cs
+++ b/MediaBrowser.Server.Implementations/Dto/DtoService.cs
@@ -1748,8 +1748,6 @@ namespace MediaBrowser.Server.Implementations.Dto
return;
}
- var path = imageInfo.Path;
-
ImageSize size;
try
diff --git a/MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs b/MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs
index 47ec47f8f..37ee2b319 100644
--- a/MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs
+++ b/MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs
@@ -248,6 +248,11 @@ namespace MediaBrowser.Server.Implementations.Photos
if (image != null)
{
+ if (!image.IsLocalFile)
+ {
+ return false;
+ }
+
if (!FileSystem.ContainsSubPath(item.GetInternalMetadataPath(), image.Path))
{
return false;
@@ -269,6 +274,11 @@ namespace MediaBrowser.Server.Implementations.Photos
if (image != null)
{
+ if (!image.IsLocalFile)
+ {
+ return false;
+ }
+
if (!FileSystem.ContainsSubPath(item.GetInternalMetadataPath(), image.Path))
{
return false;
diff --git a/MediaBrowser.Server.Implementations/Playlists/PlaylistManager.cs b/MediaBrowser.Server.Implementations/Playlists/PlaylistManager.cs
index e43978fa0..d9b3ed755 100644
--- a/MediaBrowser.Server.Implementations/Playlists/PlaylistManager.cs
+++ b/MediaBrowser.Server.Implementations/Playlists/PlaylistManager.cs
@@ -111,7 +111,7 @@ namespace MediaBrowser.Server.Implementations.Playlists
try
{
- _fileSystem.CreateDirectory(path);
+ _fileSystem.CreateDirectory(path);
var playlist = new Playlist
{
@@ -151,7 +151,7 @@ namespace MediaBrowser.Server.Implementations.Playlists
private string GetTargetPath(string path)
{
- while (_fileSystem.DirectoryExists(path))
+ while (_fileSystem.DirectoryExists(path))
{
path += "1";
}
@@ -243,6 +243,16 @@ namespace MediaBrowser.Server.Implementations.Playlists
var oldIndex = children.FindIndex(i => string.Equals(entryId, i.Item1.Id, StringComparison.OrdinalIgnoreCase));
+ if (oldIndex == newIndex)
+ {
+ return;
+ }
+
+ if (newIndex > oldIndex)
+ {
+ newIndex--;
+ }
+
var item = playlist.LinkedChildren[oldIndex];
playlist.LinkedChildren.Remove(item);
diff --git a/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs b/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs
index a49b17b34..0e5a74a9a 100644
--- a/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs
+++ b/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs
@@ -893,7 +893,10 @@ namespace MediaBrowser.XbmcMetadata.Savers
foreach (var backdrop in item.GetImages(ImageType.Backdrop))
{
- writer.WriteElementString("fanart", GetPathToSave(backdrop.Path, libraryManager, config));
+ if (backdrop.IsLocalFile)
+ {
+ writer.WriteElementString("fanart", GetPathToSave(backdrop.Path, libraryManager, config));
+ }
}
writer.WriteEndElement();