aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api/PackageReviewService.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Api/PackageReviewService.cs')
-rw-r--r--MediaBrowser.Api/PackageReviewService.cs77
1 files changed, 76 insertions, 1 deletions
diff --git a/MediaBrowser.Api/PackageReviewService.cs b/MediaBrowser.Api/PackageReviewService.cs
index 1aca596c0..cb3c80a83 100644
--- a/MediaBrowser.Api/PackageReviewService.cs
+++ b/MediaBrowser.Api/PackageReviewService.cs
@@ -4,6 +4,8 @@ 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,16 +53,89 @@ 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)