From 2ce9e05d2fc818b031f2ab12bc50ffae035033ed Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Tue, 15 Apr 2014 22:17:48 -0400 Subject: add new playback checkin endpoints --- MediaBrowser.Api/UserLibrary/UserLibraryService.cs | 77 ++++++++++++++-------- 1 file changed, 48 insertions(+), 29 deletions(-) (limited to 'MediaBrowser.Api/UserLibrary/UserLibraryService.cs') diff --git a/MediaBrowser.Api/UserLibrary/UserLibraryService.cs b/MediaBrowser.Api/UserLibrary/UserLibraryService.cs index a7e5c71e7..649f2ae02 100644 --- a/MediaBrowser.Api/UserLibrary/UserLibraryService.cs +++ b/MediaBrowser.Api/UserLibrary/UserLibraryService.cs @@ -9,6 +9,7 @@ using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Querying; using MediaBrowser.Model.Serialization; +using MediaBrowser.Model.Session; using ServiceStack; using System; using System.Collections.Generic; @@ -220,6 +221,24 @@ namespace MediaBrowser.Api.UserLibrary public string Id { get; set; } } + [Route("/Sessions/Playing", "POST")] + [Api(Description = "Reports playback has started within a session")] + public class ReportPlaybackStart : PlaybackStartInfo, IReturnVoid + { + } + + [Route("/Sessions/Playing/Progress", "POST")] + [Api(Description = "Reports playback progress within a session")] + public class ReportPlaybackProgress : PlaybackProgressInfo, IReturnVoid + { + } + + [Route("/Sessions/Playing/Stopped", "POST")] + [Api(Description = "Reports playback has stopped within a session")] + public class ReportPlaybackStopped : PlaybackStopInfo, IReturnVoid + { + } + /// /// Class OnPlaybackStart /// @@ -740,24 +759,26 @@ namespace MediaBrowser.Api.UserLibrary /// The request. public void Post(OnPlaybackStart request) { - var user = _userManager.GetUserById(request.UserId); - - var item = _dtoService.GetItemByDtoId(request.Id, user.Id); - var queueableMediaTypes = (request.QueueableMediaTypes ?? string.Empty); - var info = new PlaybackInfo + Post(new ReportPlaybackStart { CanSeek = request.CanSeek, - Item = item, - SessionId = GetSession(_sessionManager).Id, + ItemId = request.Id, QueueableMediaTypes = queueableMediaTypes.Split(',').ToList(), MediaSourceId = request.MediaSourceId, AudioStreamIndex = request.AudioStreamIndex, SubtitleStreamIndex = request.SubtitleStreamIndex - }; + }); + } - _sessionManager.OnPlaybackStart(info); + public void Post(ReportPlaybackStart request) + { + request.SessionId = GetSession(_sessionManager).Id; + + var task = _sessionManager.OnPlaybackStart(request); + + Task.WaitAll(task); } /// @@ -766,24 +787,24 @@ namespace MediaBrowser.Api.UserLibrary /// The request. public void Post(OnPlaybackProgress request) { - var user = _userManager.GetUserById(request.UserId); - - var item = _dtoService.GetItemByDtoId(request.Id, user.Id); - - var info = new PlaybackProgressInfo + Post(new ReportPlaybackProgress { - Item = item, + ItemId = request.Id, PositionTicks = request.PositionTicks, IsMuted = request.IsMuted, IsPaused = request.IsPaused, - SessionId = GetSession(_sessionManager).Id, MediaSourceId = request.MediaSourceId, AudioStreamIndex = request.AudioStreamIndex, SubtitleStreamIndex = request.SubtitleStreamIndex, VolumeLevel = request.VolumeLevel - }; + }); + } + + public void Post(ReportPlaybackProgress request) + { + request.SessionId = GetSession(_sessionManager).Id; - var task = _sessionManager.OnPlaybackProgress(info); + var task = _sessionManager.OnPlaybackProgress(request); Task.WaitAll(task); } @@ -794,21 +815,19 @@ namespace MediaBrowser.Api.UserLibrary /// The request. public void Delete(OnPlaybackStopped request) { - var user = _userManager.GetUserById(request.UserId); - - var item = _dtoService.GetItemByDtoId(request.Id, user.Id); - - var session = GetSession(_sessionManager); - - var info = new PlaybackStopInfo + Post(new ReportPlaybackStopped { - Item = item, + ItemId = request.Id, PositionTicks = request.PositionTicks, - SessionId = session.Id, MediaSourceId = request.MediaSourceId - }; + }); + } + + public void Post(ReportPlaybackStopped request) + { + request.SessionId = GetSession(_sessionManager).Id; - var task = _sessionManager.OnPlaybackStopped(info); + var task = _sessionManager.OnPlaybackStopped(request); Task.WaitAll(task); } -- cgit v1.2.3