made dtoservice synchronous

This commit is contained in:
Luke Pulverenti
2013-09-16 22:44:06 -04:00
parent 1007f24200
commit 85d7eb917f
26 changed files with 226 additions and 187 deletions

View File

@@ -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>

View File

@@ -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;
}

View File

@@ -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>

View File

@@ -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>

View File

@@ -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
{

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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);
}

View File

@@ -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>