Luke Pulverenti 10 лет назад
Родитель
Сommit
c58d4a4b2e

+ 0 - 8
MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs

@@ -25,7 +25,6 @@ namespace MediaBrowser.Api.Playback.Hls
     /// </summary>
     [Route("/Videos/{Id}/master.m3u8", "GET", Summary = "Gets a video stream using HTTP live streaming.")]
     [Route("/Videos/{Id}/master.m3u8", "HEAD", Summary = "Gets a video stream using HTTP live streaming.")]
-    [Route("/Videos/{Id}/master.m3u8", "OPTIONS", Summary = "Gets a video stream using HTTP live streaming.")]
     public class GetMasterHlsVideoStream : VideoStreamRequest
     {
         public bool EnableAdaptiveBitrateStreaming { get; set; }
@@ -71,13 +70,6 @@ namespace MediaBrowser.Api.Playback.Hls
             return result;
         }
 
-        public object Options(GetMasterHlsVideoStream request)
-        {
-            var result = GetAsync(request, "OPTIONS").Result;
-
-            return result;
-        }
-
         public object Head(GetMasterHlsVideoStream request)
         {
             var result = GetAsync(request, "HEAD").Result;

+ 0 - 12
MediaBrowser.Api/Playback/Progressive/AudioService.cs

@@ -20,8 +20,6 @@ namespace MediaBrowser.Api.Playback.Progressive
     [Route("/Audio/{Id}/stream", "GET", Summary = "Gets an audio stream")]
     [Route("/Audio/{Id}/stream.{Container}", "HEAD", Summary = "Gets an audio stream")]
     [Route("/Audio/{Id}/stream", "HEAD", Summary = "Gets an audio stream")]
-    [Route("/Audio/{Id}/stream.{Container}", "OPTIONS", Summary = "Gets an audio stream")]
-    [Route("/Audio/{Id}/stream", "OPTIONS", Summary = "Gets an audio stream")]
     public class GetAudioStream : StreamRequest
     {
         [ApiMember(Name = "Container", Description = "Container", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
@@ -57,16 +55,6 @@ namespace MediaBrowser.Api.Playback.Progressive
             return ProcessRequest(request, true);
         }
 
-        /// <summary>
-        /// Gets the specified request.
-        /// </summary>
-        /// <param name="request">The request.</param>
-        /// <returns>System.Object.</returns>
-        public object Options(GetAudioStream request)
-        {
-            return ProcessRequest(request, true);
-        }
-
         /// <summary>
         /// Gets the command line arguments.
         /// </summary>

+ 0 - 16
MediaBrowser.Api/Playback/Progressive/VideoService.cs

@@ -49,12 +49,6 @@ namespace MediaBrowser.Api.Playback.Progressive
     [Route("/Videos/{Id}/stream.wtv", "HEAD")]
     [Route("/Videos/{Id}/stream.m2ts", "HEAD")]
     [Route("/Videos/{Id}/stream", "HEAD")]
-    [Route("/Videos/{Id}/stream.mp4", "OPTIONS")]
-    [Route("/Videos/{Id}/stream.m4v", "OPTIONS")]
-    [Route("/Videos/{Id}/stream.mkv", "OPTIONS")]
-    [Route("/Videos/{Id}/stream.avi", "OPTIONS")]
-    [Route("/Videos/{Id}/stream.webm", "OPTIONS")]
-    [Route("/Videos/{Id}/stream.ts", "OPTIONS")]
     [Api(Description = "Gets a video stream")]
     public class GetVideoStream : VideoStreamRequest
     {
@@ -90,16 +84,6 @@ namespace MediaBrowser.Api.Playback.Progressive
             return ProcessRequest(request, true);
         }
 
-        /// <summary>
-        /// Optionses the specified request.
-        /// </summary>
-        /// <param name="request">The request.</param>
-        /// <returns>System.Object.</returns>
-        public object Options(GetVideoStream request)
-        {
-            return ProcessRequest(request, true);
-        }
-
         /// <summary>
         /// Gets the command line arguments.
         /// </summary>

+ 3 - 1
MediaBrowser.Dlna/Profiles/DirectTvProfile.cs

@@ -24,7 +24,9 @@ namespace MediaBrowser.Dlna.Profiles
                          Name = "User-Agent",
                          Value = "DIRECTV"
                     }
-                }
+                },
+
+                FriendlyName = "^DIRECTV.*$"
             };
 
             DirectPlayProfiles = new[]

+ 10 - 1
MediaBrowser.Server.Implementations/HttpServer/HttpListenerHost.cs

@@ -83,12 +83,21 @@ namespace MediaBrowser.Server.Implementations.HttpServer
             container.Adapter = _containerAdapter;
 
             Plugins.Add(new SwaggerFeature());
-            Plugins.Add(new CorsFeature(allowedHeaders: "Content-Type, Authorization"));
+            Plugins.Add(new CorsFeature(allowedHeaders: "Content-Type, Authorization, X-MediaBrowser-Token"));
 
             //Plugins.Add(new AuthFeature(() => new AuthUserSession(), new IAuthProvider[] {
             //    new SessionAuthProvider(_containerAdapter.Resolve<ISessionContext>()),
             //}));
 
+            PreRequestFilters.Add((httpReq, httpRes) =>
+            {
+                //Handles Request and closes Responses after emitting global HTTP Headers
+                if (string.Equals(httpReq.Verb, "OPTIONS", StringComparison.OrdinalIgnoreCase))
+                {
+                    httpRes.EndRequest(); //add a 'using ServiceStack;'
+                }
+            });
+
             HostContext.GlobalResponseFilters.Add(new ResponseFilter(_logger).FilterResponse);
         }