aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2014-04-15 22:17:48 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2014-04-15 22:17:48 -0400
commit2ce9e05d2fc818b031f2ab12bc50ffae035033ed (patch)
tree8c7b67c7090f5e9966c11f9b7d9411dac78533f2 /MediaBrowser.Api
parentab5f8ed13679dbe1763cafc599a8f566a36a4a14 (diff)
add new playback checkin endpoints
Diffstat (limited to 'MediaBrowser.Api')
-rw-r--r--MediaBrowser.Api/SessionsService.cs22
-rw-r--r--MediaBrowser.Api/UserLibrary/UserLibraryService.cs77
2 files changed, 59 insertions, 40 deletions
diff --git a/MediaBrowser.Api/SessionsService.cs b/MediaBrowser.Api/SessionsService.cs
index b71cf67b66..c6b3cce7d9 100644
--- a/MediaBrowser.Api/SessionsService.cs
+++ b/MediaBrowser.Api/SessionsService.cs
@@ -41,7 +41,7 @@ namespace MediaBrowser.Api
/// </summary>
/// <value>The id.</value>
[ApiMember(Name = "Id", Description = "Session Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")]
- public Guid Id { get; set; }
+ public string Id { get; set; }
/// <summary>
/// Artist, Genre, Studio, Person, or any kind of BaseItem
@@ -82,7 +82,7 @@ namespace MediaBrowser.Api
/// </summary>
/// <value>The id.</value>
[ApiMember(Name = "Id", Description = "Session Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")]
- public Guid Id { get; set; }
+ public string Id { get; set; }
/// <summary>
/// Artist, Genre, Studio, Person, or any kind of BaseItem
@@ -114,7 +114,7 @@ namespace MediaBrowser.Api
/// </summary>
/// <value>The id.</value>
[ApiMember(Name = "Id", Description = "Session Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")]
- public Guid Id { get; set; }
+ public string Id { get; set; }
/// <summary>
/// Gets or sets the position to seek to
@@ -138,7 +138,7 @@ namespace MediaBrowser.Api
/// </summary>
/// <value>The id.</value>
[ApiMember(Name = "Id", Description = "Session Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")]
- public Guid Id { get; set; }
+ public string Id { get; set; }
/// <summary>
/// Gets or sets the command.
@@ -156,7 +156,7 @@ namespace MediaBrowser.Api
/// </summary>
/// <value>The id.</value>
[ApiMember(Name = "Id", Description = "Session Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")]
- public Guid Id { get; set; }
+ public string Id { get; set; }
/// <summary>
/// Gets or sets the command.
@@ -174,7 +174,7 @@ namespace MediaBrowser.Api
/// </summary>
/// <value>The id.</value>
[ApiMember(Name = "Id", Description = "Session Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")]
- public Guid Id { get; set; }
+ public string Id { get; set; }
}
[Route("/Sessions/{Id}/Message", "POST", Summary = "Issues a command to a client to display a message to the user")]
@@ -185,7 +185,7 @@ namespace MediaBrowser.Api
/// </summary>
/// <value>The id.</value>
[ApiMember(Name = "Id", Description = "Session Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")]
- public Guid Id { get; set; }
+ public string Id { get; set; }
[ApiMember(Name = "Text", Description = "The message text.", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "POST")]
public string Text { get; set; }
@@ -201,7 +201,7 @@ namespace MediaBrowser.Api
public class AddUserToSession : IReturnVoid
{
[ApiMember(Name = "Id", Description = "Session Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")]
- public Guid Id { get; set; }
+ public string Id { get; set; }
[ApiMember(Name = "UserId", Description = "UserId Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")]
public Guid UserId { get; set; }
@@ -211,7 +211,7 @@ namespace MediaBrowser.Api
public class RemoveUserFromSession : IReturnVoid
{
[ApiMember(Name = "Id", Description = "Session Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")]
- public Guid Id { get; set; }
+ public string Id { get; set; }
[ApiMember(Name = "UserId", Description = "UserId Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")]
public Guid UserId { get; set; }
@@ -423,9 +423,9 @@ namespace MediaBrowser.Api
{
if (string.IsNullOrWhiteSpace(request.Id))
{
- request.Id = GetSession().Id.ToString("N");
+ request.Id = GetSession().Id;
}
- _sessionManager.ReportCapabilities(new Guid(request.Id), new SessionCapabilities
+ _sessionManager.ReportCapabilities(request.Id, new SessionCapabilities
{
PlayableMediaTypes = request.PlayableMediaTypes.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList(),
diff --git a/MediaBrowser.Api/UserLibrary/UserLibraryService.cs b/MediaBrowser.Api/UserLibrary/UserLibraryService.cs
index a7e5c71e73..649f2ae02d 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
+ {
+ }
+
/// <summary>
/// Class OnPlaybackStart
/// </summary>
@@ -740,24 +759,26 @@ namespace MediaBrowser.Api.UserLibrary
/// <param name="request">The request.</param>
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);
}
/// <summary>
@@ -766,24 +787,24 @@ namespace MediaBrowser.Api.UserLibrary
/// <param name="request">The request.</param>
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
/// <param name="request">The request.</param>
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);
}