aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MediaBrowser.Api/DefaultTheme/DefaultThemeService.cs18
-rw-r--r--MediaBrowser.Api/Images/ImageService.cs16
-rw-r--r--MediaBrowser.Api/InstantMixService.cs15
-rw-r--r--MediaBrowser.Api/LibraryService.cs18
-rw-r--r--MediaBrowser.Api/SimilarItemsHelper.cs4
-rw-r--r--MediaBrowser.Api/TvShowsService.cs14
-rw-r--r--MediaBrowser.Api/UserLibrary/ArtistsService.cs9
-rw-r--r--MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs12
-rw-r--r--MediaBrowser.Api/UserLibrary/GameGenresService.cs9
-rw-r--r--MediaBrowser.Api/UserLibrary/GenresService.cs9
-rw-r--r--MediaBrowser.Api/UserLibrary/ItemsService.cs2
-rw-r--r--MediaBrowser.Api/UserLibrary/MusicGenresService.cs9
-rw-r--r--MediaBrowser.Api/UserLibrary/PersonsService.cs9
-rw-r--r--MediaBrowser.Api/UserLibrary/StudiosService.cs8
-rw-r--r--MediaBrowser.Api/UserLibrary/UserLibraryService.cs24
-rw-r--r--MediaBrowser.Api/UserLibrary/YearsService.cs9
-rw-r--r--MediaBrowser.Api/UserService.cs17
-rw-r--r--MediaBrowser.Api/VideosService.cs1
-rw-r--r--MediaBrowser.Controller/Drawing/ImageHeader.cs10
-rw-r--r--MediaBrowser.Controller/Drawing/ImageManager.cs84
-rw-r--r--MediaBrowser.Controller/Dto/IDtoService.cs7
-rw-r--r--MediaBrowser.Providers/Music/FanArtArtistProvider.cs83
-rw-r--r--MediaBrowser.Server.Implementations/Dto/DtoService.cs14
-rw-r--r--MediaBrowser.Server.Implementations/EntryPoints/WebSocketEvents.cs6
-rw-r--r--MediaBrowser.Server.Implementations/Library/LibraryManager.cs2
-rw-r--r--MediaBrowser.Server.Implementations/Library/Validators/ArtistsValidator.cs2
26 files changed, 225 insertions, 186 deletions
diff --git a/MediaBrowser.Api/DefaultTheme/DefaultThemeService.cs b/MediaBrowser.Api/DefaultTheme/DefaultThemeService.cs
index 75dd62371..ebb583506 100644
--- a/MediaBrowser.Api/DefaultTheme/DefaultThemeService.cs
+++ b/MediaBrowser.Api/DefaultTheme/DefaultThemeService.cs
@@ -101,12 +101,12 @@ namespace MediaBrowser.Api.DefaultTheme
var eligibleSpotlightItems = itemsWithBackdrops
.Where(i => i is Game || i is Movie || i is Series || i is MusicArtist);
- var spotlightItemTasks = FilterItemsForBackdropDisplay(eligibleSpotlightItems)
+ var dtos = FilterItemsForBackdropDisplay(eligibleSpotlightItems)
.OrderBy(i => Guid.NewGuid())
.Take(50)
.Select(i => _dtoService.GetBaseItemDto(i, fields, user));
- view.SpotlightItems = await Task.WhenAll(spotlightItemTasks).ConfigureAwait(false);
+ view.SpotlightItems = dtos.ToArray();
return view;
}
@@ -132,13 +132,13 @@ namespace MediaBrowser.Api.DefaultTheme
var fields = new List<ItemFields>();
- var spotlightItemTasks = itemsWithBackdrops
+ var dtos = itemsWithBackdrops
.OfType<Game>()
.OrderBy(i => Guid.NewGuid())
.Take(50)
.Select(i => _dtoService.GetBaseItemDto(i, fields, user));
- view.SpotlightItems = await Task.WhenAll(spotlightItemTasks).ConfigureAwait(false);
+ view.SpotlightItems = dtos.ToArray();
return view;
}
@@ -171,12 +171,12 @@ namespace MediaBrowser.Api.DefaultTheme
var fields = new List<ItemFields>();
- var spotlightItemTasks = FilterItemsForBackdropDisplay(seriesWithBackdrops)
+ var dtos = FilterItemsForBackdropDisplay(seriesWithBackdrops)
.OrderBy(i => Guid.NewGuid())
.Take(50)
.Select(i => _dtoService.GetBaseItemDto(i, fields, user));
- view.SpotlightItems = await Task.WhenAll(spotlightItemTasks).ConfigureAwait(false);
+ view.SpotlightItems = dtos.ToArray();
view.ShowsItems = series
.Where(i => i.BackdropImagePaths.Count > 0)
@@ -245,12 +245,12 @@ namespace MediaBrowser.Api.DefaultTheme
var fields = new List<ItemFields>();
- var spotlightItemTasks = FilterItemsForBackdropDisplay(itemsWithBackdrops)
+ var dtos = FilterItemsForBackdropDisplay(itemsWithBackdrops)
.OrderBy(i => Guid.NewGuid())
.Take(50)
.Select(i => _dtoService.GetBaseItemDto(i, fields, user));
- view.SpotlightItems = await Task.WhenAll(spotlightItemTasks).ConfigureAwait(false);
+ view.SpotlightItems = dtos.ToArray();
view.MovieItems = moviesWithBackdrops
.OrderBy(i => Guid.NewGuid())
@@ -350,7 +350,7 @@ namespace MediaBrowser.Api.DefaultTheme
{
var date = Kernel.Instance.ImageManager.GetImageDateModified(item, path);
- var size = Kernel.Instance.ImageManager.GetImageSize(path, date).Result;
+ var size = Kernel.Instance.ImageManager.GetImageSize(path, date);
return size.Width;
}
diff --git a/MediaBrowser.Api/Images/ImageService.cs b/MediaBrowser.Api/Images/ImageService.cs
index 418793df6..fb5cb291e 100644
--- a/MediaBrowser.Api/Images/ImageService.cs
+++ b/MediaBrowser.Api/Images/ImageService.cs
@@ -361,14 +361,14 @@ namespace MediaBrowser.Api.Images
{
var item = _dtoService.GetItemByDtoId(request.Id);
- var result = GetItemImageInfos(item).Result;
+ var result = GetItemImageInfos(item);
return ToOptimizedResult(result);
}
public object Get(GetItemByNameImageInfos request)
{
- var result = GetItemByNameImageInfos(request).Result;
+ var result = GetItemByNameImageInfos(request);
return ToOptimizedResult(result);
}
@@ -378,7 +378,7 @@ namespace MediaBrowser.Api.Images
/// </summary>
/// <param name="request">The request.</param>
/// <returns>Task{List{ImageInfo}}.</returns>
- public Task<List<ImageInfo>> GetItemByNameImageInfos(GetItemByNameImageInfos request)
+ private List<ImageInfo> GetItemByNameImageInfos(GetItemByNameImageInfos request)
{
var pathInfo = PathInfo.Parse(RequestContext.PathInfo);
var type = pathInfo.GetArgumentValue<string>(0);
@@ -393,7 +393,7 @@ namespace MediaBrowser.Api.Images
/// </summary>
/// <param name="item">The item.</param>
/// <returns>Task{List{ImageInfo}}.</returns>
- public async Task<List<ImageInfo>> GetItemImageInfos(BaseItem item)
+ public List<ImageInfo> GetItemImageInfos(BaseItem item)
{
var list = new List<ImageInfo>();
@@ -405,7 +405,7 @@ namespace MediaBrowser.Api.Images
var dateModified = Kernel.Instance.ImageManager.GetImageDateModified(item, path);
- var size = await Kernel.Instance.ImageManager.GetImageSize(path, dateModified).ConfigureAwait(false);
+ var size = Kernel.Instance.ImageManager.GetImageSize(path, dateModified);
list.Add(new ImageInfo
{
@@ -426,7 +426,7 @@ namespace MediaBrowser.Api.Images
var dateModified = Kernel.Instance.ImageManager.GetImageDateModified(item, image);
- var size = await Kernel.Instance.ImageManager.GetImageSize(image, dateModified).ConfigureAwait(false);
+ var size = Kernel.Instance.ImageManager.GetImageSize(image, dateModified);
list.Add(new ImageInfo
{
@@ -450,7 +450,7 @@ namespace MediaBrowser.Api.Images
var dateModified = Kernel.Instance.ImageManager.GetImageDateModified(item, image);
- var size = await Kernel.Instance.ImageManager.GetImageSize(image, dateModified).ConfigureAwait(false);
+ var size = Kernel.Instance.ImageManager.GetImageSize(image, dateModified);
list.Add(new ImageInfo
{
@@ -482,7 +482,7 @@ namespace MediaBrowser.Api.Images
var dateModified = Kernel.Instance.ImageManager.GetImageDateModified(item, image);
- var size = await Kernel.Instance.ImageManager.GetImageSize(image, dateModified).ConfigureAwait(false);
+ var size = Kernel.Instance.ImageManager.GetImageSize(image, dateModified);
list.Add(new ImageInfo
{
diff --git a/MediaBrowser.Api/InstantMixService.cs b/MediaBrowser.Api/InstantMixService.cs
index 4b407d778..baea2bc78 100644
--- a/MediaBrowser.Api/InstantMixService.cs
+++ b/MediaBrowser.Api/InstantMixService.cs
@@ -6,7 +6,6 @@ using ServiceStack.ServiceHost;
using System;
using System.Collections.Generic;
using System.Linq;
-using System.Threading.Tasks;
namespace MediaBrowser.Api
{
@@ -56,7 +55,7 @@ namespace MediaBrowser.Api
{
var item = _dtoService.GetItemByDtoId(request.Id);
- var result = GetInstantMixResult(request, item.Genres).Result;
+ var result = GetInstantMixResult(request, item.Genres);
return ToOptimizedResult(result);
}
@@ -72,7 +71,7 @@ namespace MediaBrowser.Api
.Concat(album.Genres)
.Distinct(StringComparer.OrdinalIgnoreCase);
- var result = GetInstantMixResult(request, genres).Result;
+ var result = GetInstantMixResult(request, genres);
return ToOptimizedResult(result);
}
@@ -81,7 +80,7 @@ namespace MediaBrowser.Api
{
var genre = GetMusicGenre(request.Name, _libraryManager);
- var result = GetInstantMixResult(request, new[] { genre.Name }).Result;
+ var result = GetInstantMixResult(request, new[] { genre.Name });
return ToOptimizedResult(result);
}
@@ -98,12 +97,12 @@ namespace MediaBrowser.Api
.Concat(artist.Genres)
.Distinct(StringComparer.OrdinalIgnoreCase);
- var result = GetInstantMixResult(request, genres).Result;
+ var result = GetInstantMixResult(request, genres);
return ToOptimizedResult(result);
}
- private async Task<ItemsResult> GetInstantMixResult(BaseGetSimilarItems request, IEnumerable<string> genres)
+ private ItemsResult GetInstantMixResult(BaseGetSimilarItems request, IEnumerable<string> genres)
{
var user = request.UserId.HasValue ? _userManager.GetUserById(request.UserId.Value) : null;
@@ -132,10 +131,10 @@ namespace MediaBrowser.Api
TotalRecordCount = items.Length
};
- var tasks = items.Take(request.Limit ?? items.Length)
+ var dtos = items.Take(request.Limit ?? items.Length)
.Select(i => _dtoService.GetBaseItemDto(i, fields, user));
- result.Items = await Task.WhenAll(tasks).ConfigureAwait(false);
+ result.Items = dtos.ToArray();
return result;
}
diff --git a/MediaBrowser.Api/LibraryService.cs b/MediaBrowser.Api/LibraryService.cs
index 14b68942c..96d6d3273 100644
--- a/MediaBrowser.Api/LibraryService.cs
+++ b/MediaBrowser.Api/LibraryService.cs
@@ -225,7 +225,7 @@ namespace MediaBrowser.Api
/// <returns>System.Object.</returns>
public object Get(GetAncestors request)
{
- var result = GetAncestors(request).Result;
+ var result = GetAncestors(request);
return ToOptimizedResult(result);
}
@@ -235,11 +235,11 @@ namespace MediaBrowser.Api
/// </summary>
/// <param name="request">The request.</param>
/// <returns>Task{BaseItemDto[]}.</returns>
- public async Task<BaseItemDto[]> GetAncestors(GetAncestors request)
+ public BaseItemDto[] GetAncestors(GetAncestors request)
{
var item = _dtoService.GetItemByDtoId(request.Id);
- var tasks = new List<Task<BaseItemDto>>();
+ var baseItemDtos = new List<BaseItemDto>();
var user = request.UserId.HasValue ? _userManager.GetUserById(request.UserId.Value) : null;
@@ -257,7 +257,7 @@ namespace MediaBrowser.Api
parent = TranslateParentItem(parent, user);
}
- tasks.Add(_dtoService.GetBaseItemDto(parent, fields, user));
+ baseItemDtos.Add(_dtoService.GetBaseItemDto(parent, fields, user));
if (parent is UserRootFolder)
{
@@ -267,7 +267,7 @@ namespace MediaBrowser.Api
parent = parent.Parent;
}
- return await Task.WhenAll(tasks).ConfigureAwait(false);
+ return baseItemDtos.ToArray();
}
private BaseItem TranslateParentItem(BaseItem item, User user)
@@ -512,11 +512,11 @@ namespace MediaBrowser.Api
.Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true))
.ToList();
- var tasks = item.ThemeSongIds.Select(_itemRepo.RetrieveItem)
+ var dtos = item.ThemeSongIds.Select(_itemRepo.RetrieveItem)
.OrderBy(i => i.SortName)
.Select(i => _dtoService.GetBaseItemDto(i, fields, user, item));
- var items = await Task.WhenAll(tasks).ConfigureAwait(false);
+ var items = dtos.ToArray();
return new ThemeMediaResult
{
@@ -559,11 +559,11 @@ namespace MediaBrowser.Api
.Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true))
.ToList();
- var tasks = item.ThemeVideoIds.Select(_itemRepo.RetrieveItem)
+ var dtos = item.ThemeVideoIds.Select(_itemRepo.RetrieveItem)
.OrderBy(i => i.SortName)
.Select(i => _dtoService.GetBaseItemDto(i, fields, user, item));
- var items = await Task.WhenAll(tasks).ConfigureAwait(false);
+ var items = dtos.ToArray();
return new ThemeMediaResult
{
diff --git a/MediaBrowser.Api/SimilarItemsHelper.cs b/MediaBrowser.Api/SimilarItemsHelper.cs
index 987786045..f884a5f1d 100644
--- a/MediaBrowser.Api/SimilarItemsHelper.cs
+++ b/MediaBrowser.Api/SimilarItemsHelper.cs
@@ -74,7 +74,7 @@ namespace MediaBrowser.Api
}).Where(i => i.HasValue).Select(i => i.Value);
}
}
-
+
/// <summary>
/// Class SimilarItemsHelper
/// </summary>
@@ -112,7 +112,7 @@ namespace MediaBrowser.Api
var result = new ItemsResult
{
- Items = items.Take(request.Limit ?? items.Length).Select(i => dtoService.GetBaseItemDto(i, fields, user)).Select(t => t.Result).ToArray(),
+ Items = items.Take(request.Limit ?? items.Length).Select(i => dtoService.GetBaseItemDto(i, fields, user)).ToArray(),
TotalRecordCount = items.Length
};
diff --git a/MediaBrowser.Api/TvShowsService.cs b/MediaBrowser.Api/TvShowsService.cs
index 0e0493747..e7e8e71c3 100644
--- a/MediaBrowser.Api/TvShowsService.cs
+++ b/MediaBrowser.Api/TvShowsService.cs
@@ -191,7 +191,7 @@ namespace MediaBrowser.Api
var fields = request.GetItemFields().ToList();
- var returnItems = await GetItemDtos(pagedItems, user, fields).ConfigureAwait(false);
+ var returnItems = pagedItems.Select(i => _dtoService.GetBaseItemDto(i, fields, user)).ToArray();
return new ItemsResult
{
@@ -248,18 +248,6 @@ namespace MediaBrowser.Api
}
/// <summary>
- /// Gets the item dtos.
- /// </summary>
- /// <param name="pagedItems">The paged items.</param>
- /// <param name="user">The user.</param>
- /// <param name="fields">The fields.</param>
- /// <returns>Task.</returns>
- private Task<BaseItemDto[]> GetItemDtos(IEnumerable<BaseItem> pagedItems, User user, List<ItemFields> fields)
- {
- return Task.WhenAll(pagedItems.Select(i => _dtoService.GetBaseItemDto(i, fields, user)));
- }
-
- /// <summary>
/// Applies the paging.
/// </summary>
/// <param name="request">The request.</param>
diff --git a/MediaBrowser.Api/UserLibrary/ArtistsService.cs b/MediaBrowser.Api/UserLibrary/ArtistsService.cs
index fae851d3f..6e7343096 100644
--- a/MediaBrowser.Api/UserLibrary/ArtistsService.cs
+++ b/MediaBrowser.Api/UserLibrary/ArtistsService.cs
@@ -9,7 +9,6 @@ using ServiceStack.ServiceHost;
using System;
using System.Collections.Generic;
using System.Linq;
-using System.Threading.Tasks;
namespace MediaBrowser.Api.UserLibrary
{
@@ -65,7 +64,7 @@ namespace MediaBrowser.Api.UserLibrary
/// <returns>System.Object.</returns>
public object Get(GetArtist request)
{
- var result = GetItem(request).Result;
+ var result = GetItem(request);
return ToOptimizedResult(result);
}
@@ -75,7 +74,7 @@ namespace MediaBrowser.Api.UserLibrary
/// </summary>
/// <param name="request">The request.</param>
/// <returns>Task{BaseItemDto}.</returns>
- private async Task<BaseItemDto> GetItem(GetArtist request)
+ private BaseItemDto GetItem(GetArtist request)
{
var item = GetArtist(request.Name, LibraryManager);
@@ -86,10 +85,10 @@ namespace MediaBrowser.Api.UserLibrary
{
var user = UserManager.GetUserById(request.UserId.Value);
- return await DtoService.GetBaseItemDto(item, fields.ToList(), user).ConfigureAwait(false);
+ return DtoService.GetBaseItemDto(item, fields.ToList(), user);
}
- return await DtoService.GetBaseItemDto(item, fields.ToList()).ConfigureAwait(false);
+ return DtoService.GetBaseItemDto(item, fields.ToList());
}
/// <summary>
diff --git a/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs b/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs
index 5b40b631c..734278924 100644
--- a/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs
+++ b/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs
@@ -121,11 +121,9 @@ namespace MediaBrowser.Api.UserLibrary
var fields = request.GetItemFields().ToList();
- var tasks = ibnItems.Select(i => GetDto(i, user, fields));
+ var dtos = ibnItems.Select(i => GetDto(i, user, fields));
- var resultItems = await Task.WhenAll(tasks).ConfigureAwait(false);
-
- result.Items = resultItems.Where(i => i != null).ToArray();
+ result.Items = dtos.Where(i => i != null).ToArray();
return result;
}
@@ -253,10 +251,10 @@ namespace MediaBrowser.Api.UserLibrary
/// <param name="user">The user.</param>
/// <param name="fields">The fields.</param>
/// <returns>Task{DtoBaseItem}.</returns>
- private async Task<BaseItemDto> GetDto(TItemType item, User user, List<ItemFields> fields)
+ private BaseItemDto GetDto(TItemType item, User user, List<ItemFields> fields)
{
- var dto = user == null ? await DtoService.GetBaseItemDto(item, fields).ConfigureAwait(false) :
- await DtoService.GetBaseItemDto(item, fields, user).ConfigureAwait(false);
+ var dto = user == null ? DtoService.GetBaseItemDto(item, fields) :
+ DtoService.GetBaseItemDto(item, fields, user);
return dto;
}
diff --git a/MediaBrowser.Api/UserLibrary/GameGenresService.cs b/MediaBrowser.Api/UserLibrary/GameGenresService.cs
index 8762b891f..a5ab91cbc 100644
--- a/MediaBrowser.Api/UserLibrary/GameGenresService.cs
+++ b/MediaBrowser.Api/UserLibrary/GameGenresService.cs
@@ -9,7 +9,6 @@ using ServiceStack.ServiceHost;
using System;
using System.Collections.Generic;
using System.Linq;
-using System.Threading.Tasks;
namespace MediaBrowser.Api.UserLibrary
{
@@ -56,7 +55,7 @@ namespace MediaBrowser.Api.UserLibrary
/// <returns>System.Object.</returns>
public object Get(GetGameGenre request)
{
- var result = GetItem(request).Result;
+ var result = GetItem(request);
return ToOptimizedResult(result);
}
@@ -66,7 +65,7 @@ namespace MediaBrowser.Api.UserLibrary
/// </summary>
/// <param name="request">The request.</param>
/// <returns>Task{BaseItemDto}.</returns>
- private async Task<BaseItemDto> GetItem(GetGameGenre request)
+ private BaseItemDto GetItem(GetGameGenre request)
{
var item = GetGameGenre(request.Name, LibraryManager);
@@ -77,10 +76,10 @@ namespace MediaBrowser.Api.UserLibrary
{
var user = UserManager.GetUserById(request.UserId.Value);
- return await DtoService.GetBaseItemDto(item, fields.ToList(), user).ConfigureAwait(false);
+ return DtoService.GetBaseItemDto(item, fields.ToList(), user);
}
- return await DtoService.GetBaseItemDto(item, fields.ToList()).ConfigureAwait(false);
+ return DtoService.GetBaseItemDto(item, fields.ToList());
}
/// <summary>
diff --git a/MediaBrowser.Api/UserLibrary/GenresService.cs b/MediaBrowser.Api/UserLibrary/GenresService.cs
index 7faf20e9a..fc72a5f52 100644
--- a/MediaBrowser.Api/UserLibrary/GenresService.cs
+++ b/MediaBrowser.Api/UserLibrary/GenresService.cs
@@ -8,7 +8,6 @@ using ServiceStack.ServiceHost;
using System;
using System.Collections.Generic;
using System.Linq;
-using System.Threading.Tasks;
namespace MediaBrowser.Api.UserLibrary
{
@@ -60,7 +59,7 @@ namespace MediaBrowser.Api.UserLibrary
/// <returns>System.Object.</returns>
public object Get(GetGenre request)
{
- var result = GetItem(request).Result;
+ var result = GetItem(request);
return ToOptimizedResult(result);
}
@@ -70,7 +69,7 @@ namespace MediaBrowser.Api.UserLibrary
/// </summary>
/// <param name="request">The request.</param>
/// <returns>Task{BaseItemDto}.</returns>
- private async Task<BaseItemDto> GetItem(GetGenre request)
+ private BaseItemDto GetItem(GetGenre request)
{
var item = GetGenre(request.Name, LibraryManager);
@@ -81,10 +80,10 @@ namespace MediaBrowser.Api.UserLibrary
{
var user = UserManager.GetUserById(request.UserId.Value);
- return await DtoService.GetBaseItemDto(item, fields.ToList(), user).ConfigureAwait(false);
+ return DtoService.GetBaseItemDto(item, fields.ToList(), user);
}
- return await DtoService.GetBaseItemDto(item, fields.ToList()).ConfigureAwait(false);
+ return DtoService.GetBaseItemDto(item, fields.ToList());
}
/// <summary>
diff --git a/MediaBrowser.Api/UserLibrary/ItemsService.cs b/MediaBrowser.Api/UserLibrary/ItemsService.cs
index 40ce84405..4079e41ef 100644
--- a/MediaBrowser.Api/UserLibrary/ItemsService.cs
+++ b/MediaBrowser.Api/UserLibrary/ItemsService.cs
@@ -260,7 +260,7 @@ namespace MediaBrowser.Api.UserLibrary
var fields = request.GetItemFields().ToList();
- var returnItems = await Task.WhenAll(pagedItems.Select(i => _dtoService.GetBaseItemDto(i, fields, user))).ConfigureAwait(false);
+ var returnItems = pagedItems.Select(i => _dtoService.GetBaseItemDto(i, fields, user)).ToArray();
return new ItemsResult
{
diff --git a/MediaBrowser.Api/UserLibrary/MusicGenresService.cs b/MediaBrowser.Api/UserLibrary/MusicGenresService.cs
index 35e8d4df1..84a769b56 100644
--- a/MediaBrowser.Api/UserLibrary/MusicGenresService.cs
+++ b/MediaBrowser.Api/UserLibrary/MusicGenresService.cs
@@ -9,7 +9,6 @@ using ServiceStack.ServiceHost;
using System;
using System.Collections.Generic;
using System.Linq;
-using System.Threading.Tasks;
namespace MediaBrowser.Api.UserLibrary
{
@@ -56,7 +55,7 @@ namespace MediaBrowser.Api.UserLibrary
/// <returns>System.Object.</returns>
public object Get(GetMusicGenre request)
{
- var result = GetItem(request).Result;
+ var result = GetItem(request);
return ToOptimizedResult(result);
}
@@ -66,7 +65,7 @@ namespace MediaBrowser.Api.UserLibrary
/// </summary>
/// <param name="request">The request.</param>
/// <returns>Task{BaseItemDto}.</returns>
- private async Task<BaseItemDto> GetItem(GetMusicGenre request)
+ private BaseItemDto GetItem(GetMusicGenre request)
{
var item = GetMusicGenre(request.Name, LibraryManager);
@@ -77,10 +76,10 @@ namespace MediaBrowser.Api.UserLibrary
{
var user = UserManager.GetUserById(request.UserId.Value);
- return await DtoService.GetBaseItemDto(item, fields.ToList(), user).ConfigureAwait(false);
+ return DtoService.GetBaseItemDto(item, fields.ToList(), user);
}
- return await DtoService.GetBaseItemDto(item, fields.ToList()).ConfigureAwait(false);
+ return DtoService.GetBaseItemDto(item, fields.ToList());
}
/// <summary>
diff --git a/MediaBrowser.Api/UserLibrary/PersonsService.cs b/MediaBrowser.Api/UserLibrary/PersonsService.cs
index 301052444..9fe9f7139 100644
--- a/MediaBrowser.Api/UserLibrary/PersonsService.cs
+++ b/MediaBrowser.Api/UserLibrary/PersonsService.cs
@@ -8,7 +8,6 @@ using ServiceStack.ServiceHost;
using System;
using System.Collections.Generic;
using System.Linq;
-using System.Threading.Tasks;
namespace MediaBrowser.Api.UserLibrary
{
@@ -72,7 +71,7 @@ namespace MediaBrowser.Api.UserLibrary
/// <returns>System.Object.</returns>
public object Get(GetPerson request)
{
- var result = GetItem(request).Result;
+ var result = GetItem(request);
return ToOptimizedResult(result);
}
@@ -82,7 +81,7 @@ namespace MediaBrowser.Api.UserLibrary
/// </summary>
/// <param name="request">The request.</param>
/// <returns>Task{BaseItemDto}.</returns>
- private async Task<BaseItemDto> GetItem(GetPerson request)
+ private BaseItemDto GetItem(GetPerson request)
{
var item = GetPerson(request.Name, LibraryManager);
@@ -93,10 +92,10 @@ namespace MediaBrowser.Api.UserLibrary
{
var user = UserManager.GetUserById(request.UserId.Value);
- return await DtoService.GetBaseItemDto(item, fields.ToList(), user).ConfigureAwait(false);
+ return DtoService.GetBaseItemDto(item, fields.ToList(), user);
}
- return await DtoService.GetBaseItemDto(item, fields.ToList()).ConfigureAwait(false);
+ return DtoService.GetBaseItemDto(item, fields.ToList());
}
/// <summary>
diff --git a/MediaBrowser.Api/UserLibrary/StudiosService.cs b/MediaBrowser.Api/UserLibrary/StudiosService.cs
index 5780d7270..3dc4dce6c 100644
--- a/MediaBrowser.Api/UserLibrary/StudiosService.cs
+++ b/MediaBrowser.Api/UserLibrary/StudiosService.cs
@@ -60,7 +60,7 @@ namespace MediaBrowser.Api.UserLibrary
/// <returns>System.Object.</returns>
public object Get(GetStudio request)
{
- var result = GetItem(request).Result;
+ var result = GetItem(request);
return ToOptimizedResult(result);
}
@@ -70,7 +70,7 @@ namespace MediaBrowser.Api.UserLibrary
/// </summary>
/// <param name="request">The request.</param>
/// <returns>Task{BaseItemDto}.</returns>
- private async Task<BaseItemDto> GetItem(GetStudio request)
+ private BaseItemDto GetItem(GetStudio request)
{
var item = GetStudio(request.Name, LibraryManager);
@@ -81,10 +81,10 @@ namespace MediaBrowser.Api.UserLibrary
{
var user = UserManager.GetUserById(request.UserId.Value);
- return await DtoService.GetBaseItemDto(item, fields.ToList(), user).ConfigureAwait(false);
+ return DtoService.GetBaseItemDto(item, fields.ToList(), user);
}
- return await DtoService.GetBaseItemDto(item, fields.ToList()).ConfigureAwait(false);
+ return DtoService.GetBaseItemDto(item, fields.ToList());
}
/// <summary>
diff --git a/MediaBrowser.Api/UserLibrary/UserLibraryService.cs b/MediaBrowser.Api/UserLibrary/UserLibraryService.cs
index 4e8ef7d8d..392fffc79 100644
--- a/MediaBrowser.Api/UserLibrary/UserLibraryService.cs
+++ b/MediaBrowser.Api/UserLibrary/UserLibraryService.cs
@@ -393,12 +393,12 @@ namespace MediaBrowser.Api.UserLibrary
/// <returns>System.Object.</returns>
public object Get(GetSpecialFeatures request)
{
- var result = GetAsync(request).Result;
+ var result = GetAsync(request);
return ToOptimizedResult(result);
}
- private Task<BaseItemDto[]> GetAsync(GetSpecialFeatures request)
+ private BaseItemDto[] GetAsync(GetSpecialFeatures request)
{
var user = _userManager.GetUserById(request.UserId);
@@ -415,12 +415,12 @@ namespace MediaBrowser.Api.UserLibrary
// Avoid implicitly captured closure
var movie1 = movie;
- var tasks = movie.SpecialFeatureIds
+ var dtos = movie.SpecialFeatureIds
.Select(_itemRepo.RetrieveItem)
.OrderBy(i => i.SortName)
.Select(i => _dtoService.GetBaseItemDto(i, fields, user, movie1));
- return Task.WhenAll(tasks);
+ return dtos.ToArray();
}
var series = item as Series;
@@ -428,7 +428,7 @@ namespace MediaBrowser.Api.UserLibrary
// Get them from the child tree
if (series != null)
{
- var tasks = series
+ var dtos = series
.RecursiveChildren
.OfType<Episode>()
.Where(i => i.ParentIndexNumber.HasValue && i.ParentIndexNumber.Value == 0)
@@ -448,7 +448,7 @@ namespace MediaBrowser.Api.UserLibrary
.ThenBy(i => i.SortName)
.Select(i => _dtoService.GetBaseItemDto(i, fields, user));
- return Task.WhenAll(tasks);
+ return dtos.ToArray();
}
throw new ArgumentException("The item does not support special features");
@@ -461,12 +461,12 @@ namespace MediaBrowser.Api.UserLibrary
/// <returns>System.Object.</returns>
public object Get(GetLocalTrailers request)
{
- var result = GetAsync(request).Result;
+ var result = GetAsync(request);
return ToOptimizedResult(result);
}
- private Task<BaseItemDto[]> GetAsync(GetLocalTrailers request)
+ private BaseItemDto[] GetAsync(GetLocalTrailers request)
{
var user = _userManager.GetUserById(request.UserId);
@@ -475,12 +475,12 @@ namespace MediaBrowser.Api.UserLibrary
// Get everything
var fields = Enum.GetNames(typeof(ItemFields)).Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true)).ToList();
- var tasks = item.LocalTrailerIds
+ var dtos = item.LocalTrailerIds
.Select(_itemRepo.RetrieveItem)
.OrderBy(i => i.SortName)
.Select(i => _dtoService.GetBaseItemDto(i, fields, user, item));
- return Task.WhenAll(tasks);
+ return dtos.ToArray();
}
/// <summary>
@@ -497,7 +497,7 @@ namespace MediaBrowser.Api.UserLibrary
// Get everything
var fields = Enum.GetNames(typeof(ItemFields)).Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true)).ToList();
- var result = _dtoService.GetBaseItemDto(item, fields, user).Result;
+ var result = _dtoService.GetBaseItemDto(item, fields, user);
return ToOptimizedResult(result);
}
@@ -516,7 +516,7 @@ namespace MediaBrowser.Api.UserLibrary
// Get everything
var fields = Enum.GetNames(typeof(ItemFields)).Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true)).ToList();
- var result = _dtoService.GetBaseItemDto(item, fields, user).Result;
+ var result = _dtoService.GetBaseItemDto(item, fields, user);
return ToOptimizedResult(result);
}
diff --git a/MediaBrowser.Api/UserLibrary/YearsService.cs b/MediaBrowser.Api/UserLibrary/YearsService.cs
index 4a4518520..aeee21278 100644
--- a/MediaBrowser.Api/UserLibrary/YearsService.cs
+++ b/MediaBrowser.Api/UserLibrary/YearsService.cs
@@ -9,7 +9,6 @@ using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
-using System.Threading.Tasks;
namespace MediaBrowser.Api.UserLibrary
{
@@ -66,7 +65,7 @@ namespace MediaBrowser.Api.UserLibrary
/// <returns>System.Object.</returns>
public object Get(GetYear request)
{
- var result = GetItem(request).Result;
+ var result = GetItem(request);
return ToOptimizedResult(result);
}
@@ -76,7 +75,7 @@ namespace MediaBrowser.Api.UserLibrary
/// </summary>
/// <param name="request">The request.</param>
/// <returns>Task{BaseItemDto}.</returns>
- private async Task<BaseItemDto> GetItem(GetYear request)
+ private BaseItemDto GetItem(GetYear request)
{
var item = LibraryManager.GetYear(request.Year);
@@ -87,10 +86,10 @@ namespace MediaBrowser.Api.UserLibrary
{
var user = UserManager.GetUserById(request.UserId.Value);
- return await DtoService.GetBaseItemDto(item, fields.ToList(), user).ConfigureAwait(false);
+ return DtoService.GetBaseItemDto(item, fields.ToList(), user);
}
- return await DtoService.GetBaseItemDto(item, fields.ToList()).ConfigureAwait(false);
+ return DtoService.GetBaseItemDto(item, fields.ToList());
}
/// <summary>
diff --git a/MediaBrowser.Api/UserService.cs b/MediaBrowser.Api/UserService.cs
index 5c8d6a868..ee8b6ff32 100644
--- a/MediaBrowser.Api/UserService.cs
+++ b/MediaBrowser.Api/UserService.cs
@@ -20,7 +20,7 @@ namespace MediaBrowser.Api
[Api(Description = "Gets a list of users")]
public class GetUsers : IReturn<List<UserDto>>
{
- [ApiMember(Name = "IsHidden", Description="Optional filter by IsHidden=true or false", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")]
+ [ApiMember(Name = "IsHidden", Description = "Optional filter by IsHidden=true or false", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")]
public bool? IsHidden { get; set; }
[ApiMember(Name = "IsDisabled", Description = "Optional filter by IsDisabled=true or false", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")]
@@ -32,7 +32,7 @@ namespace MediaBrowser.Api
public class GetPublicUsers : IReturn<List<UserDto>>
{
}
-
+
/// <summary>
/// Class GetUser
/// </summary>
@@ -220,9 +220,12 @@ namespace MediaBrowser.Api
users = users.Where(i => i.Configuration.IsHidden == request.IsHidden.Value);
}
- var tasks = users.OrderBy(u => u.Name).Select(_dtoService.GetUserDto).Select(i => i.Result);
+ var result = users
+ .OrderBy(u => u.Name)
+ .Select(_dtoService.GetUserDto)
+ .ToList();
- return ToOptimizedResult(tasks.ToList());
+ return ToOptimizedResult(result);
}
/// <summary>
@@ -239,7 +242,7 @@ namespace MediaBrowser.Api
throw new ResourceNotFoundException("User not found");
}
- var result = _dtoService.GetUserDto(user).Result;
+ var result = _dtoService.GetUserDto(user);
return ToOptimizedResult(result);
}
@@ -305,7 +308,7 @@ namespace MediaBrowser.Api
var result = new AuthenticationResult
{
- User = await _dtoService.GetUserDto(user).ConfigureAwait(false)
+ User = _dtoService.GetUserDto(user)
};
return result;
@@ -404,7 +407,7 @@ namespace MediaBrowser.Api
newUser.UpdateConfiguration(dtoUser.Configuration, _xmlSerializer);
- var result = _dtoService.GetUserDto(newUser).Result;
+ var result = _dtoService.GetUserDto(newUser);
return ToOptimizedResult(result);
}
diff --git a/MediaBrowser.Api/VideosService.cs b/MediaBrowser.Api/VideosService.cs
index 9827ac50f..f51dc23e7 100644
--- a/MediaBrowser.Api/VideosService.cs
+++ b/MediaBrowser.Api/VideosService.cs
@@ -65,7 +65,6 @@ namespace MediaBrowser.Api
var items = video.AdditionalPartIds.Select(_itemRepo.RetrieveItem)
.OrderBy(i => i.SortName)
.Select(i => _dtoService.GetBaseItemDto(i, fields, user, video))
- .Select(t => t.Result)
.ToArray();
var result = new ItemsResult
diff --git a/MediaBrowser.Controller/Drawing/ImageHeader.cs b/MediaBrowser.Controller/Drawing/ImageHeader.cs
index bca897a4c..11072ff0c 100644
--- a/MediaBrowser.Controller/Drawing/ImageHeader.cs
+++ b/MediaBrowser.Controller/Drawing/ImageHeader.cs
@@ -1,6 +1,4 @@
-using System.Threading.Tasks;
-using MediaBrowser.Common.IO;
-using MediaBrowser.Model.Logging;
+using MediaBrowser.Model.Logging;
using System;
using System.Collections.Generic;
using System.Drawing;
@@ -41,7 +39,7 @@ namespace MediaBrowser.Controller.Drawing
/// <param name="logger">The logger.</param>
/// <returns>The dimensions of the specified image.</returns>
/// <exception cref="ArgumentException">The image was of an unrecognised format.</exception>
- public static async Task<Size> GetDimensions(string path, ILogger logger)
+ public static Size GetDimensions(string path, ILogger logger)
{
try
{
@@ -59,11 +57,11 @@ namespace MediaBrowser.Controller.Drawing
}
// Buffer to memory stream to avoid image locking file
- using (var fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read, StreamDefaults.DefaultFileStreamBufferSize, true))
+ using (var fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read))
{
using (var memoryStream = new MemoryStream())
{
- await fs.CopyToAsync(memoryStream).ConfigureAwait(false);
+ fs.CopyTo(memoryStream);
// Co it the old fashioned way
using (var b = Image.FromStream(memoryStream, true, false))
diff --git a/MediaBrowser.Controller/Drawing/ImageManager.cs b/MediaBrowser.Controller/Drawing/ImageManager.cs
index 51ae6b7ca..05f45a457 100644
--- a/MediaBrowser.Controller/Drawing/ImageManager.cs
+++ b/MediaBrowser.Controller/Drawing/ImageManager.cs
@@ -69,11 +69,6 @@ namespace MediaBrowser.Controller.Drawing
private readonly IItemRepository _itemRepo;
/// <summary>
- /// The _locks
- /// </summary>
- private readonly ConcurrentDictionary<string, SemaphoreSlim> _locks = new ConcurrentDictionary<string, SemaphoreSlim>();
-
- /// <summary>
/// Initializes a new instance of the <see cref="ImageManager" /> class.
/// </summary>
/// <param name="logger">The logger.</param>
@@ -146,7 +141,7 @@ namespace MediaBrowser.Controller.Drawing
}
}
- var originalImageSize = await GetImageSize(originalImagePath, dateModified).ConfigureAwait(false);
+ var originalImageSize = GetImageSize(originalImagePath, dateModified);
// Determine the output size based on incoming parameters
var newSize = DrawingUtils.Resize(originalImageSize, width, height, maxWidth, maxHeight);
@@ -304,7 +299,7 @@ namespace MediaBrowser.Controller.Drawing
/// <param name="dateModified">The date modified.</param>
/// <returns>Task{ImageSize}.</returns>
/// <exception cref="System.ArgumentNullException">imagePath</exception>
- public async Task<ImageSize> GetImageSize(string imagePath, DateTime dateModified)
+ public ImageSize GetImageSize(string imagePath, DateTime dateModified)
{
if (string.IsNullOrEmpty(imagePath))
{
@@ -317,7 +312,7 @@ namespace MediaBrowser.Controller.Drawing
if (!_cachedImagedSizes.TryGetValue(name, out size))
{
- size = await GetImageSize(name, imagePath).ConfigureAwait(false);
+ size = GetImageSize(name, imagePath);
_cachedImagedSizes.AddOrUpdate(name, size, (keyName, oldValue) => size);
}
@@ -333,7 +328,7 @@ namespace MediaBrowser.Controller.Drawing
/// <param name="keyName">Name of the key.</param>
/// <param name="imagePath">The image path.</param>
/// <returns>ImageSize.</returns>
- private async Task<ImageSize> GetImageSize(string keyName, string imagePath)
+ private ImageSize GetImageSize(string keyName, string imagePath)
{
// Now check the file system cache
var fullCachePath = ImageSizeCache.GetResourcePath(keyName, ".txt");
@@ -349,34 +344,29 @@ namespace MediaBrowser.Controller.Drawing
// Cache file doesn't exist or is currently being written to
}
- var semaphore = GetLock(fullCachePath);
-
- await semaphore.WaitAsync().ConfigureAwait(false);
-
- try
- {
- var result = File.ReadAllText(fullCachePath).Split('|').Select(i => double.Parse(i, UsCulture)).ToArray();
+ var syncLock = GetObjectLock(fullCachePath);
- return new ImageSize { Width = result[0], Height = result[1] };
- }
- catch (FileNotFoundException)
+ lock (syncLock)
{
- // Cache file doesn't exist no biggie
- }
- catch (DirectoryNotFoundException)
- {
- // Cache file doesn't exist no biggie
- }
- catch
- {
- semaphore.Release();
+ try
+ {
+ var result = File.ReadAllText(fullCachePath)
+ .Split('|')
+ .Select(i => double.Parse(i, UsCulture))
+ .ToArray();
- throw;
- }
+ return new ImageSize { Width = result[0], Height = result[1] };
+ }
+ catch (FileNotFoundException)
+ {
+ // Cache file doesn't exist no biggie
+ }
+ catch (DirectoryNotFoundException)
+ {
+ // Cache file doesn't exist no biggie
+ }
- try
- {
- var size = await ImageHeader.GetDimensions(imagePath, _logger).ConfigureAwait(false);
+ var size = ImageHeader.GetDimensions(imagePath, _logger);
var parentPath = Path.GetDirectoryName(fullCachePath);
@@ -390,10 +380,6 @@ namespace MediaBrowser.Controller.Drawing
return new ImageSize { Width = size.Width, Height = size.Height };
}
- finally
- {
- semaphore.Release();
- }
}
/// <summary>
@@ -600,7 +586,7 @@ namespace MediaBrowser.Controller.Drawing
return GetEnhancedImage(originalImagePath, dateModified, item, imageType, imageIndex, supportedImageEnhancers);
}
-
+
/// <summary>
/// Runs an image through the image enhancers, caches the result, and returns the cached path
/// </summary>
@@ -787,13 +773,33 @@ namespace MediaBrowser.Controller.Drawing
}
/// <summary>
+ /// The _semaphoreLocks
+ /// </summary>
+ private readonly ConcurrentDictionary<string, SemaphoreSlim> _semaphoreLocks = new ConcurrentDictionary<string, SemaphoreSlim>();
+
+ /// <summary>
/// Gets the lock.
/// </summary>
/// <param name="filename">The filename.</param>
/// <returns>System.Object.</returns>
private SemaphoreSlim GetLock(string filename)
{
- return _locks.GetOrAdd(filename, key => new SemaphoreSlim(1, 1));
+ return _semaphoreLocks.GetOrAdd(filename, key => new SemaphoreSlim(1, 1));
+ }
+
+ /// <summary>
+ /// The _semaphoreLocks
+ /// </summary>
+ private readonly ConcurrentDictionary<string, object> _locks = new ConcurrentDictionary<string, object>();
+
+ /// <summary>
+ /// Gets the lock.
+ /// </summary>
+ /// <param name="filename">The filename.</param>
+ /// <returns>System.Object.</returns>
+ private object GetObjectLock(string filename)
+ {
+ return _locks.GetOrAdd(filename, key => new object());
}
}
}
diff --git a/MediaBrowser.Controller/Dto/IDtoService.cs b/MediaBrowser.Controller/Dto/IDtoService.cs
index 8a023832a..6cd10a2fb 100644
--- a/MediaBrowser.Controller/Dto/IDtoService.cs
+++ b/MediaBrowser.Controller/Dto/IDtoService.cs
@@ -6,7 +6,6 @@ using MediaBrowser.Model.Querying;
using MediaBrowser.Model.Session;
using System;
using System.Collections.Generic;
-using System.Threading.Tasks;
namespace MediaBrowser.Controller.Dto
{
@@ -19,8 +18,8 @@ namespace MediaBrowser.Controller.Dto
/// Gets the user dto.
/// </summary>
/// <param name="user">The user.</param>
- /// <returns>Task{UserDto}.</returns>
- Task<UserDto> GetUserDto(User user);
+ /// <returns>UserDto.</returns>
+ UserDto GetUserDto(User user);
/// <summary>
/// Gets the session info dto.
@@ -66,6 +65,6 @@ namespace MediaBrowser.Controller.Dto
/// <param name="user">The user.</param>
/// <param name="owner">The owner.</param>
/// <returns>Task{BaseItemDto}.</returns>
- Task<BaseItemDto> GetBaseItemDto(BaseItem item, List<ItemFields> fields, User user = null, BaseItem owner = null);
+ BaseItemDto GetBaseItemDto(BaseItem item, List<ItemFields> fields, User user = null, BaseItem owner = null);
}
}
diff --git a/MediaBrowser.Providers/Music/FanArtArtistProvider.cs b/MediaBrowser.Providers/Music/FanArtArtistProvider.cs
index 9960ebc91..bb448d729 100644
--- a/MediaBrowser.Providers/Music/FanArtArtistProvider.cs
+++ b/MediaBrowser.Providers/Music/FanArtArtistProvider.cs
@@ -1,4 +1,5 @@
-using MediaBrowser.Common.Configuration;
+using System.Net;
+using MediaBrowser.Common.Configuration;
using MediaBrowser.Common.Extensions;
using MediaBrowser.Common.IO;
using MediaBrowser.Common.Net;
@@ -17,6 +18,7 @@ using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System.Xml;
+using MediaBrowser.Model.Net;
namespace MediaBrowser.Providers.Music
{
@@ -314,8 +316,19 @@ namespace MediaBrowser.Providers.Music
path = node != null ? node.Value : null;
if (!string.IsNullOrEmpty(path))
{
- await _providerManager.SaveImage(item, path, FanArtResourcePool, ImageType.Logo, null, cancellationToken)
- .ConfigureAwait(false);
+ try
+ {
+ await _providerManager.SaveImage(item, path, FanArtResourcePool, ImageType.Logo, null, cancellationToken)
+ .ConfigureAwait(false);
+ }
+ catch (HttpException ex)
+ {
+ // Sometimes fanart has bad url's in their xml. Nothing we can do here but catch it
+ if (!ex.StatusCode.HasValue || ex.StatusCode.Value != HttpStatusCode.NotFound)
+ {
+ throw;
+ }
+ }
}
}
cancellationToken.ThrowIfCancellationRequested();
@@ -332,10 +345,21 @@ namespace MediaBrowser.Providers.Music
path = node.Value;
if (!string.IsNullOrEmpty(path))
{
- await _providerManager.SaveImage(item, path, FanArtResourcePool, ImageType.Backdrop, numBackdrops, cancellationToken)
- .ConfigureAwait(false);
- numBackdrops++;
- if (numBackdrops >= ConfigurationManager.Configuration.MaxBackdrops) break;
+ try
+ {
+ await _providerManager.SaveImage(item, path, FanArtResourcePool, ImageType.Backdrop, numBackdrops, cancellationToken)
+ .ConfigureAwait(false);
+ numBackdrops++;
+ if (numBackdrops >= ConfigurationManager.Configuration.MaxBackdrops) break;
+ }
+ catch (HttpException ex)
+ {
+ // Sometimes fanart has bad url's in their xml. Nothing we can do here but catch it
+ if (!ex.StatusCode.HasValue || ex.StatusCode.Value != HttpStatusCode.NotFound)
+ {
+ throw;
+ }
+ }
}
}
@@ -353,8 +377,19 @@ namespace MediaBrowser.Providers.Music
path = node != null ? node.Value : null;
if (!string.IsNullOrEmpty(path))
{
- await _providerManager.SaveImage(item, path, FanArtResourcePool, ImageType.Art, null, cancellationToken)
- .ConfigureAwait(false);
+ try
+ {
+ await _providerManager.SaveImage(item, path, FanArtResourcePool, ImageType.Art, null, cancellationToken)
+ .ConfigureAwait(false);
+ }
+ catch (HttpException ex)
+ {
+ // Sometimes fanart has bad url's in their xml. Nothing we can do here but catch it
+ if (!ex.StatusCode.HasValue || ex.StatusCode.Value != HttpStatusCode.NotFound)
+ {
+ throw;
+ }
+ }
}
}
cancellationToken.ThrowIfCancellationRequested();
@@ -366,8 +401,19 @@ namespace MediaBrowser.Providers.Music
path = node != null ? node.Value : null;
if (!string.IsNullOrEmpty(path))
{
- await _providerManager.SaveImage(item, path, FanArtResourcePool, ImageType.Banner, null, cancellationToken)
- .ConfigureAwait(false);
+ try
+ {
+ await _providerManager.SaveImage(item, path, FanArtResourcePool, ImageType.Banner, null, cancellationToken)
+ .ConfigureAwait(false);
+ }
+ catch (HttpException ex)
+ {
+ // Sometimes fanart has bad url's in their xml. Nothing we can do here but catch it
+ if (!ex.StatusCode.HasValue || ex.StatusCode.Value != HttpStatusCode.NotFound)
+ {
+ throw;
+ }
+ }
}
}
@@ -380,8 +426,19 @@ namespace MediaBrowser.Providers.Music
path = node != null ? node.Value : null;
if (!string.IsNullOrEmpty(path))
{
- await _providerManager.SaveImage(item, path, FanArtResourcePool, ImageType.Primary, null, cancellationToken)
- .ConfigureAwait(false);
+ try
+ {
+ await _providerManager.SaveImage(item, path, FanArtResourcePool, ImageType.Primary, null, cancellationToken)
+ .ConfigureAwait(false);
+ }
+ catch (HttpException ex)
+ {
+ // Sometimes fanart has bad url's in their xml. Nothing we can do here but catch it
+ if (!ex.StatusCode.HasValue || ex.StatusCode.Value != HttpStatusCode.NotFound)
+ {
+ throw;
+ }
+ }
}
}
}
diff --git a/MediaBrowser.Server.Implementations/Dto/DtoService.cs b/MediaBrowser.Server.Implementations/Dto/DtoService.cs
index eda6d9c13..feadc488f 100644
--- a/MediaBrowser.Server.Implementations/Dto/DtoService.cs
+++ b/MediaBrowser.Server.Implementations/Dto/DtoService.cs
@@ -19,7 +19,6 @@ using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
-using System.Threading.Tasks;
namespace MediaBrowser.Server.Implementations.Dto
{
@@ -49,7 +48,7 @@ namespace MediaBrowser.Server.Implementations.Dto
/// <param name="owner">The owner.</param>
/// <returns>Task{DtoBaseItem}.</returns>
/// <exception cref="System.ArgumentNullException">item</exception>
- public async Task<BaseItemDto> GetBaseItemDto(BaseItem item, List<ItemFields> fields, User user = null, BaseItem owner = null)
+ public BaseItemDto GetBaseItemDto(BaseItem item, List<ItemFields> fields, User user = null, BaseItem owner = null)
{
if (item == null)
{
@@ -72,7 +71,7 @@ namespace MediaBrowser.Server.Implementations.Dto
{
try
{
- await AttachPrimaryImageAspectRatio(dto, item).ConfigureAwait(false);
+ AttachPrimaryImageAspectRatio(dto, item);
}
catch (Exception ex)
{
@@ -189,7 +188,7 @@ namespace MediaBrowser.Server.Implementations.Dto
}
}
- public async Task<UserDto> GetUserDto(User user)
+ public UserDto GetUserDto(User user)
{
if (user == null)
{
@@ -214,7 +213,7 @@ namespace MediaBrowser.Server.Implementations.Dto
try
{
- await AttachPrimaryImageAspectRatio(dto, user).ConfigureAwait(false);
+ AttachPrimaryImageAspectRatio(dto, user);
}
catch (Exception ex)
{
@@ -1132,9 +1131,8 @@ namespace MediaBrowser.Server.Implementations.Dto
/// </summary>
/// <param name="dto">The dto.</param>
/// <param name="item">The item.</param>
- /// <param name="logger">The _logger.</param>
/// <returns>Task.</returns>
- private async Task AttachPrimaryImageAspectRatio(IItemDto dto, BaseItem item)
+ private void AttachPrimaryImageAspectRatio(IItemDto dto, BaseItem item)
{
var path = item.PrimaryImagePath;
@@ -1152,7 +1150,7 @@ namespace MediaBrowser.Server.Implementations.Dto
try
{
- size = await Kernel.Instance.ImageManager.GetImageSize(path, dateModified).ConfigureAwait(false);
+ size = Kernel.Instance.ImageManager.GetImageSize(path, dateModified);
}
catch (FileNotFoundException)
{
diff --git a/MediaBrowser.Server.Implementations/EntryPoints/WebSocketEvents.cs b/MediaBrowser.Server.Implementations/EntryPoints/WebSocketEvents.cs
index 43c1e53b3..29372a40a 100644
--- a/MediaBrowser.Server.Implementations/EntryPoints/WebSocketEvents.cs
+++ b/MediaBrowser.Server.Implementations/EntryPoints/WebSocketEvents.cs
@@ -44,7 +44,7 @@ namespace MediaBrowser.Server.Implementations.EntryPoints
private readonly ITaskManager _taskManager;
private readonly IDtoService _dtoService;
-
+
/// <summary>
/// Initializes a new instance of the <see cref="WebSocketEvents" /> class.
/// </summary>
@@ -134,9 +134,9 @@ namespace MediaBrowser.Server.Implementations.EntryPoints
/// </summary>
/// <param name="sender">The sender.</param>
/// <param name="e">The e.</param>
- async void userManager_UserUpdated(object sender, GenericEventArgs<User> e)
+ void userManager_UserUpdated(object sender, GenericEventArgs<User> e)
{
- var dto = await _dtoService.GetUserDto(e.Argument).ConfigureAwait(false);
+ var dto = _dtoService.GetUserDto(e.Argument);
_serverManager.SendWebSocketMessage("UserUpdated", dto);
}
diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
index 10fc8a586..5230bb4c3 100644
--- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
+++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
@@ -824,7 +824,7 @@ namespace MediaBrowser.Server.Implementations.Library
/// <returns>Task.</returns>
public async Task ValidatePeople(CancellationToken cancellationToken, IProgress<double> progress)
{
- const int maxTasks = 5;
+ const int maxTasks = 3;
var tasks = new List<Task>();
diff --git a/MediaBrowser.Server.Implementations/Library/Validators/ArtistsValidator.cs b/MediaBrowser.Server.Implementations/Library/Validators/ArtistsValidator.cs
index f41a2e60c..607f32427 100644
--- a/MediaBrowser.Server.Implementations/Library/Validators/ArtistsValidator.cs
+++ b/MediaBrowser.Server.Implementations/Library/Validators/ArtistsValidator.cs
@@ -202,7 +202,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
.Distinct(StringComparer.OrdinalIgnoreCase)
.ToList();
- const int maxTasks = 5;
+ const int maxTasks = 3;
var tasks = new List<Task>();