Explorar o código

fixes #574 - Add ability to report playable media types

Luke Pulverenti %!s(int64=11) %!d(string=hai) anos
pai
achega
d365e1df23

+ 24 - 0
MediaBrowser.Api/SessionsService.cs

@@ -194,6 +194,21 @@ namespace MediaBrowser.Api
         public Guid UserId { get; set; }
     }
 
+    [Route("/Sessions/{Id}/Capabilities", "POST")]
+    [Api(("Updates capabilities for a device"))]
+    public class PostCapabilities : IReturnVoid
+    {
+        /// <summary>
+        /// Gets or sets the id.
+        /// </summary>
+        /// <value>The id.</value>
+        [ApiMember(Name = "Id", Description = "Session Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")]
+        public Guid Id { get; set; }
+
+        [ApiMember(Name = "PlayableMediaTypes", Description = "A list of playable media types, comma delimited.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "POST")]
+        public string PlayableMediaTypes { get; set; }
+    }
+    
     /// <summary>
     /// Class SessionsService
     /// </summary>
@@ -335,5 +350,14 @@ namespace MediaBrowser.Api
         {
             _sessionManager.RemoveAdditionalUser(request.Id, request.UserId);
         }
+
+        public void Post(PostCapabilities request)
+        {
+            var session = _sessionManager.Sessions.First(i => i.Id == request.Id);
+
+            session.PlayableMediaTypes = request.PlayableMediaTypes
+                .Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
+                .ToList();
+        }
     }
 }

+ 18 - 3
MediaBrowser.Controller/Session/SessionInfo.cs

@@ -1,4 +1,5 @@
 using MediaBrowser.Controller.Entities;
+using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.Session;
 using System;
 using System.Collections.Generic;
@@ -14,12 +15,20 @@ namespace MediaBrowser.Controller.Session
         public SessionInfo()
         {
             QueueableMediaTypes = new List<string>();
+            PlayableMediaTypes = new List<string>
+            {
+                MediaType.Audio,
+                MediaType.Book,
+                MediaType.Game,
+                MediaType.Photo,
+                MediaType.Video
+            };
 
             AdditionalUsers = new List<SessionUserInfo>();
         }
 
         public List<SessionUserInfo> AdditionalUsers { get; set; }
-        
+
         /// <summary>
         /// Gets or sets the remote end point.
         /// </summary>
@@ -37,7 +46,13 @@ namespace MediaBrowser.Controller.Session
         /// </summary>
         /// <value>The queueable media types.</value>
         public List<string> QueueableMediaTypes { get; set; }
-        
+
+        /// <summary>
+        /// Gets or sets the playable media types.
+        /// </summary>
+        /// <value>The playable media types.</value>
+        public List<string> PlayableMediaTypes { get; set; }
+
         /// <summary>
         /// Gets or sets the id.
         /// </summary>
@@ -169,7 +184,7 @@ namespace MediaBrowser.Controller.Session
                 {
                     return SessionController.SupportsMediaRemoteControl;
                 }
-                
+
                 return false;
             }
         }

+ 9 - 0
MediaBrowser.Model/Session/SessionInfoDto.cs

@@ -24,6 +24,12 @@ namespace MediaBrowser.Model.Session
         /// </summary>
         /// <value>The queueable media types.</value>
         public List<string> QueueableMediaTypes { get; set; }
+
+        /// <summary>
+        /// Gets or sets the playable media types.
+        /// </summary>
+        /// <value>The playable media types.</value>
+        public List<string> PlayableMediaTypes { get; set; }
         
         /// <summary>
         /// Gets or sets the id.
@@ -138,6 +144,9 @@ namespace MediaBrowser.Model.Session
         public SessionInfoDto()
         {
             AdditionalUsers = new List<SessionUserInfo>();
+
+            PlayableMediaTypes = new List<string>();
+            QueueableMediaTypes = new List<string>();
         }
     }
 

+ 1 - 0
MediaBrowser.Server.Implementations/Dto/DtoService.cs

@@ -244,6 +244,7 @@ namespace MediaBrowser.Server.Implementations.Dto
                 ApplicationVersion = session.ApplicationVersion,
                 CanSeek = session.CanSeek,
                 QueueableMediaTypes = session.QueueableMediaTypes,
+                PlayableMediaTypes = session.PlayableMediaTypes,
                 RemoteEndPoint = session.RemoteEndPoint,
                 AdditionalUsers = session.AdditionalUsers
             };