diff options
| author | Sven Van den brande <sven.vandenbrande@outlook.com> | 2013-11-10 22:47:45 +0100 |
|---|---|---|
| committer | Sven Van den brande <sven.vandenbrande@outlook.com> | 2013-11-10 22:47:45 +0100 |
| commit | 09d7bc00c2f21b0686bb08051bf20ba7aebccfcd (patch) | |
| tree | 923bcb092565d4a2f0466b532044c84ca7e0f8ee /MediaBrowser.Api | |
| parent | e4564ac8607e45534bfb8132ccb410eab04f5528 (diff) | |
| parent | 0bf016d0ff500a2a2ffc51a22f90748b79d6dbbc (diff) | |
Merge branch 'master' of https://github.com/MediaBrowser/MediaBrowser
Diffstat (limited to 'MediaBrowser.Api')
| -rw-r--r-- | MediaBrowser.Api/DefaultTheme/DefaultThemeService.cs | 146 | ||||
| -rw-r--r-- | MediaBrowser.Api/DefaultTheme/Models.cs | 5 | ||||
| -rw-r--r-- | MediaBrowser.Api/PackageReviewService.cs | 85 |
3 files changed, 82 insertions, 154 deletions
diff --git a/MediaBrowser.Api/DefaultTheme/DefaultThemeService.cs b/MediaBrowser.Api/DefaultTheme/DefaultThemeService.cs index bb23f7f7e..df69f68f8 100644 --- a/MediaBrowser.Api/DefaultTheme/DefaultThemeService.cs +++ b/MediaBrowser.Api/DefaultTheme/DefaultThemeService.cs @@ -288,9 +288,6 @@ namespace MediaBrowser.Api.DefaultTheme var view = new TvView(); - SetFavoriteGenres(view, series, user); - SetFavoriteStudios(view, series, user); - var fields = new List<ItemFields>(); var seriesWithBestBackdrops = FilterItemsForBackdropDisplay(seriesWithBackdrops).ToList(); @@ -401,146 +398,6 @@ namespace MediaBrowser.Api.DefaultTheme return ToOptimizedResult(view); } - private void SetFavoriteGenres(TvView view, IEnumerable<BaseItem> inputItems, User user) - { - var all = inputItems.SelectMany(i => i.Genres) - .Distinct(StringComparer.OrdinalIgnoreCase); - - view.FavoriteGenres = all.Select(i => - { - try - { - var itemByName = _libraryManager.GetGenre(i); - - var counts = itemByName.GetItemByNameCounts(user); - - var count = counts == null ? 0 : counts.SeriesCount; - - if (count > 0 && _userDataManager.GetUserData(user.Id, itemByName.GetUserDataKey()).IsFavorite) - { - return new ItemByNameInfo - { - Name = itemByName.Name, - ItemCount = count - }; - } - } - catch (Exception ex) - { - _logger.ErrorException("Error getting genre {0}", ex, i); - - } - - return null; - - }).Where(i => i != null).ToList(); - } - - private void SetFavoriteStudios(TvView view, IEnumerable<BaseItem> inputItems, User user) - { - var all = inputItems.SelectMany(i => i.Studios) - .Distinct(StringComparer.OrdinalIgnoreCase); - - view.FavoriteStudios = all.Select(i => - { - try - { - var itemByName = _libraryManager.GetStudio(i); - - var counts = itemByName.GetItemByNameCounts(user); - - var count = counts == null ? 0 : counts.SeriesCount; - - if (count > 0 && _userDataManager.GetUserData(user.Id, itemByName.GetUserDataKey()).IsFavorite) - { - return new ItemByNameInfo - { - Name = itemByName.Name, - ItemCount = count - }; - } - } - catch (Exception ex) - { - _logger.ErrorException("Error getting studio {0}", ex, i); - - } - - return null; - - }).Where(i => i != null).ToList(); - } - - private void SetFavoriteGenres(MoviesView view, IEnumerable<BaseItem> inputItems, User user) - { - var all = inputItems.SelectMany(i => i.Genres) - .Distinct(StringComparer.OrdinalIgnoreCase); - - view.FavoriteGenres = all.Select(i => - { - try - { - var itemByName = _libraryManager.GetGenre(i); - - var counts = itemByName.GetItemByNameCounts(user); - - var count = counts == null ? 0 : counts.MovieCount; - - if (count > 0 && _userDataManager.GetUserData(user.Id, itemByName.GetUserDataKey()).IsFavorite) - { - return new ItemByNameInfo - { - Name = itemByName.Name, - ItemCount = count - }; - } - } - catch (Exception ex) - { - _logger.ErrorException("Error getting genre {0}", ex, i); - - } - - return null; - - }).Where(i => i != null).ToList(); - } - - private void SetFavoriteStudios(MoviesView view, IEnumerable<BaseItem> inputItems, User user) - { - var all = inputItems.SelectMany(i => i.Studios) - .Distinct(StringComparer.OrdinalIgnoreCase); - - view.FavoriteStudios = all.Select(i => - { - try - { - var itemByName = _libraryManager.GetStudio(i); - - var counts = itemByName.GetItemByNameCounts(user); - - var count = counts == null ? 0 : counts.MovieCount; - - if (count > 0 && _userDataManager.GetUserData(user.Id, itemByName.GetUserDataKey()).IsFavorite) - { - return new ItemByNameInfo - { - Name = itemByName.Name, - ItemCount = count - }; - } - } - catch (Exception ex) - { - _logger.ErrorException("Error getting studio {0}", ex, i); - - } - - return null; - - }).Where(i => i != null).ToList(); - } - public object Get(GetMovieView request) { var user = _userManager.GetUserById(request.UserId); @@ -557,9 +414,6 @@ namespace MediaBrowser.Api.DefaultTheme var movies = items.OfType<Movie>() .ToList(); - SetFavoriteGenres(view, movies, user); - SetFavoriteStudios(view, movies, user); - var trailers = items.OfType<Trailer>() .ToList(); diff --git a/MediaBrowser.Api/DefaultTheme/Models.cs b/MediaBrowser.Api/DefaultTheme/Models.cs index bdff82de2..5219c44f9 100644 --- a/MediaBrowser.Api/DefaultTheme/Models.cs +++ b/MediaBrowser.Api/DefaultTheme/Models.cs @@ -34,9 +34,6 @@ namespace MediaBrowser.Api.DefaultTheme public List<BaseItemDto> LatestTrailers { get; set; } public List<BaseItemDto> LatestMovies { get; set; } - - public List<ItemByNameInfo> FavoriteGenres { get; set; } - public List<ItemByNameInfo> FavoriteStudios { get; set; } } public class TvView : BaseView @@ -47,8 +44,6 @@ namespace MediaBrowser.Api.DefaultTheme public List<ItemStub> RomanceItems { get; set; } public List<ItemStub> ComedyItems { get; set; } - public List<ItemByNameInfo> FavoriteGenres { get; set; } - public List<ItemByNameInfo> FavoriteStudios { get; set; } public List<string> SeriesIdsInProgress { get; set; } public List<BaseItemDto> LatestEpisodes { get; set; } diff --git a/MediaBrowser.Api/PackageReviewService.cs b/MediaBrowser.Api/PackageReviewService.cs index 1aca596c0..e0d52ee8a 100644 --- a/MediaBrowser.Api/PackageReviewService.cs +++ b/MediaBrowser.Api/PackageReviewService.cs @@ -1,9 +1,12 @@ using System.Collections.Generic; using System.Globalization; +using System.Net; using System.Threading; using System.Threading.Tasks; using MediaBrowser.Common.Constants; using MediaBrowser.Common.Net; +using MediaBrowser.Model.Entities; +using MediaBrowser.Model.Serialization; using ServiceStack.ServiceHost; namespace MediaBrowser.Api @@ -51,27 +54,103 @@ namespace MediaBrowser.Api public string Review { get; set; } } + /// <summary> + /// Class InstallPackage + /// </summary> + [Route("/PackageReviews/{Id}", "GET")] + [Api(("Retrieve reviews for a package"))] + public class ReviewRequest : IReturn<List<PackageReviewInfo>> + { + /// <summary> + /// Gets or sets the Id. + /// </summary> + /// <value>The Id.</value> + [ApiMember(Name = "Id", Description = "Package Id", IsRequired = true, DataType = "int", ParameterType = "path", Verb = "GET")] + public int Id { get; set; } + + /// <summary> + /// Gets or sets the max rating. + /// </summary> + /// <value>The max rating.</value> + [ApiMember(Name = "MaxRating", Description = "Retrieve only reviews less than or equal to this", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")] + public int MaxRating { get; set; } + + /// <summary> + /// Gets or sets the min rating. + /// </summary> + /// <value>The max rating.</value> + [ApiMember(Name = "MinRating", Description = "Retrieve only reviews greator than or equal to this", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")] + public int MinRating { get; set; } + + /// <summary> + /// Only retrieve reviews with at least a short review. + /// </summary> + /// <value>True if should only get reviews with a title.</value> + [ApiMember(Name = "ForceTitle", Description = "Whether or not to restrict results to those with a title", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")] + public bool ForceTitle { get; set; } + + /// <summary> + /// Gets or sets the limit for the query. + /// </summary> + /// <value>The max rating.</value> + [ApiMember(Name = "Limit", Description = "Limit the result to this many reviews (ordered by latest)", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")] + public int Limit { get; set; } + + } public class PackageReviewService : BaseApiService { private readonly IHttpClient _httpClient; private readonly INetworkManager _netManager; + private readonly IJsonSerializer _serializer; - public PackageReviewService(IHttpClient client, INetworkManager net) + public PackageReviewService(IHttpClient client, INetworkManager net, IJsonSerializer serializer) { _httpClient = client; _netManager = net; + _serializer = serializer; + } + + public object Get(ReviewRequest request) + { + var parms = "?id=" + request.Id; + + if (request.MaxRating > 0) + { + parms += "&max=" + request.MaxRating; + } + if (request.MinRating > 0) + { + parms += "&min=" + request.MinRating; + } + if (request.MinRating > 0) + { + parms += "&limit=" + request.Limit; + } + if (request.ForceTitle) + { + parms += "&title=true"; + } + + var result = _httpClient.Get(Constants.MbAdminUrl + "/service/packageReview/retrieve"+parms, CancellationToken.None).Result; + + var reviews = _serializer.DeserializeFromStream<List<PackageReviewInfo>>(result); + + return ToOptimizedResult(reviews); } public void Post(CreateReviewRequest request) { + var reviewText = WebUtility.HtmlEncode(request.Review ?? string.Empty); + var title = WebUtility.HtmlEncode(request.Title ?? string.Empty); + var review = new Dictionary<string, string> { { "id", request.Id.ToString(CultureInfo.InvariantCulture) }, { "mac", _netManager.GetMacAddress() }, { "rating", request.Rating.ToString(CultureInfo.InvariantCulture) }, { "recommend", request.Recommend.ToString() }, - { "title", request.Title }, - { "review", request.Review }, + { "title", title }, + { "review", reviewText }, }; Task.WaitAll(_httpClient.Post(Constants.MbAdminUrl + "/service/packageReview/update", review, CancellationToken.None)); |
