From 2441ba0c6d3221aed42d90e904767b4c64899a53 Mon Sep 17 00:00:00 2001 From: LukePulverenti Luke Pulverenti luke pulverenti Date: Sun, 9 Sep 2012 15:00:19 -0400 Subject: Added api methods to set user ratings for items --- .../HttpHandlers/UserItemRatingHandler.cs | 59 ++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 MediaBrowser.Api/HttpHandlers/UserItemRatingHandler.cs (limited to 'MediaBrowser.Api/HttpHandlers/UserItemRatingHandler.cs') diff --git a/MediaBrowser.Api/HttpHandlers/UserItemRatingHandler.cs b/MediaBrowser.Api/HttpHandlers/UserItemRatingHandler.cs new file mode 100644 index 000000000..6f3908d05 --- /dev/null +++ b/MediaBrowser.Api/HttpHandlers/UserItemRatingHandler.cs @@ -0,0 +1,59 @@ +using MediaBrowser.Common.Net.Handlers; +using MediaBrowser.Model.DTO; +using MediaBrowser.Model.Entities; +using System.ComponentModel.Composition; +using System.Net; +using System.Threading.Tasks; + +namespace MediaBrowser.Api.HttpHandlers +{ + /// + /// Provides a handler to set a user's rating for an item + /// + [Export(typeof(BaseHandler))] + public class UserItemRatingHandler : BaseSerializationHandler + { + public override bool HandlesRequest(HttpListenerRequest request) + { + return ApiService.IsApiUrlMatch("UserItemRating", request); + } + + protected override Task GetObjectToSerialize() + { + // Get the item + BaseItem item = ApiService.GetItemById(QueryString["id"]); + + // Get the user + User user = ApiService.GetUserById(QueryString["userid"], true); + + // Get the user data for this item + UserItemData data = item.GetUserData(user); + + if (data == null) + { + data = new UserItemData(); + item.AddUserData(user, data); + } + + // If clearing the rating, set it to null + if (QueryString["clear"] == "1") + { + data.Rating = null; + } + + // If the user's rating mode is set to like/dislike + else if (user.ItemRatingMode == ItemRatingMode.LikeOrDislike) + { + data.Likes = QueryString["likes"] == "1"; + } + + // If the user's rating mode is set to numeric + else if (user.ItemRatingMode == ItemRatingMode.Numeric) + { + data.Rating = float.Parse(QueryString["value"]); + } + + return Task.FromResult(ApiService.GetDTOUserItemData(data)); + } + } +} \ No newline at end of file -- cgit v1.2.3