فهرست منبع

fixed dashboard caching option

Luke Pulverenti 12 سال پیش
والد
کامیت
8b32e3292a

+ 37 - 4
MediaBrowser.Server.Implementations/HttpServer/HttpResultFactory.cs

@@ -43,13 +43,46 @@ namespace MediaBrowser.Server.Implementations.HttpServer
         /// <returns>System.Object.</returns>
         public object GetResult(object content, string contentType, IDictionary<string, string> responseHeaders = null)
         {
-            var result = new HttpResult(content, contentType);
+            return GetHttpResult(content, contentType, responseHeaders);
+        }
+
+        /// <summary>
+        /// Gets the HTTP result.
+        /// </summary>
+        /// <param name="content">The content.</param>
+        /// <param name="contentType">Type of the content.</param>
+        /// <param name="responseHeaders">The response headers.</param>
+        /// <returns>IHasOptions.</returns>
+        private IHasOptions GetHttpResult(object content, string contentType, IDictionary<string, string> responseHeaders = null)
+        {
+            IHasOptions result;
+
+            var stream = content as Stream;
+
+            if (stream != null)
+            {
+                result = new StreamWriter(stream, contentType, _logger);
+            }
+
+            else
+            {
+                var bytes = content as byte[];
+
+                if (bytes != null)
+                {
+                    result = new StreamWriter(bytes, contentType, _logger);
+                }
+                else
+                {
+                    result = new HttpResult(content, contentType);
+                }
+            }
 
             if (responseHeaders != null)
             {
                 AddResponseHeaders(result, responseHeaders);
             }
-
+            
             return result;
         }
 
@@ -376,7 +409,7 @@ namespace MediaBrowser.Server.Implementations.HttpServer
 
                 if (isHeadRequest)
                 {
-                    return new HttpResult(new byte[] { }, contentType);
+                    return GetHttpResult(new byte[] { }, contentType);
                 }
 
                 return new StreamWriter(stream, contentType, _logger);
@@ -384,7 +417,7 @@ namespace MediaBrowser.Server.Implementations.HttpServer
 
             if (isHeadRequest)
             {
-                return new HttpResult(new byte[] { }, contentType);
+                return GetHttpResult(new byte[] { }, contentType);
             }
 
             string content;

+ 22 - 2
MediaBrowser.Server.Implementations/HttpServer/HttpServer.cs

@@ -1,3 +1,16 @@
+// ***********************************************************************
+// Assembly         : MediaBrowser.Server.Implementations
+// Author           : Luke
+// Created          : 03-06-2013
+//
+// Last Modified By : Luke
+// Last Modified On : 03-24-2013
+// ***********************************************************************
+// <copyright file="HttpServer.cs" company="">
+//     Copyright (c) . All rights reserved.
+// </copyright>
+// <summary></summary>
+// ***********************************************************************
 using Funq;
 using MediaBrowser.Common;
 using MediaBrowser.Common.Extensions;
@@ -47,7 +60,7 @@ namespace MediaBrowser.Server.Implementations.HttpServer
         /// <summary>
         /// The _rest services
         /// </summary>
-        private readonly List<IRestfulService> _restServices = new List<IRestfulService>(); 
+        private readonly List<IRestfulService> _restServices = new List<IRestfulService>();
 
         /// <summary>
         /// Gets or sets the application host.
@@ -66,7 +79,7 @@ namespace MediaBrowser.Server.Implementations.HttpServer
         /// </summary>
         /// <value>The protobuf serializer.</value>
         private IProtobufSerializer ProtobufSerializer { get; set; }
-        
+
         /// <summary>
         /// Occurs when [web socket connected].
         /// </summary>
@@ -208,6 +221,7 @@ namespace MediaBrowser.Server.Implementations.HttpServer
         /// Format should be: http://127.0.0.1:8080/ or http://127.0.0.1:8080/somevirtual/
         /// Note: the trailing slash is required! For more info see the
         /// HttpListener.Prefixes property on MSDN.</param>
+        /// <exception cref="System.ArgumentNullException">urlBase</exception>
         public override void Start(string urlBase)
         {
             if (string.IsNullOrEmpty(urlBase))
@@ -457,6 +471,8 @@ namespace MediaBrowser.Server.Implementations.HttpServer
         /// Logs the response.
         /// </summary>
         /// <param name="ctx">The CTX.</param>
+        /// <param name="url">The URL.</param>
+        /// <param name="endPoint">The end point.</param>
         private void LogResponse(HttpListenerContext ctx, string url, IPEndPoint endPoint)
         {
             if (!EnableHttpRequestLogging)
@@ -554,9 +570,13 @@ namespace MediaBrowser.Server.Implementations.HttpServer
         {
             _restServices.AddRange(services);
 
+            _logger.Info("Calling EndpointHost.ConfigureHost");
             EndpointHost.ConfigureHost(this, ServerName, CreateServiceManager());
+
+            _logger.Info("Registering protobuf as a content type filter");
             ContentTypeFilters.Register(ContentType.ProtoBuf, (reqCtx, res, stream) => ProtobufSerializer.SerializeToStream(res, stream), (type, stream) => ProtobufSerializer.DeserializeFromStream(stream, type));
 
+            _logger.Info("Calling ServiceStack AppHost.Init");
             Init();
         }
     }

+ 12 - 1
MediaBrowser.Server.Implementations/HttpServer/StreamWriter.cs

@@ -19,7 +19,7 @@ namespace MediaBrowser.Server.Implementations.HttpServer
         /// Gets or sets the source stream.
         /// </summary>
         /// <value>The source stream.</value>
-        public Stream SourceStream { get; set; }
+        private Stream SourceStream { get; set; }
 
         /// <summary>
         /// The _options
@@ -53,6 +53,17 @@ namespace MediaBrowser.Server.Implementations.HttpServer
             Options["Content-Type"] = contentType;
         }
 
+        /// <summary>
+        /// Initializes a new instance of the <see cref="StreamWriter"/> class.
+        /// </summary>
+        /// <param name="source">The source.</param>
+        /// <param name="contentType">Type of the content.</param>
+        /// <param name="logger">The logger.</param>
+        public StreamWriter(byte[] source, string contentType, ILogger logger)
+            : this(new MemoryStream(source), contentType, logger)
+        {
+        }
+
         /// <summary>
         /// Writes to.
         /// </summary>

+ 6 - 0
MediaBrowser.Server.Implementations/ServerManager/ServerManager.cs

@@ -153,6 +153,7 @@ namespace MediaBrowser.Server.Implementations.ServerManager
             }
 
             ReloadUdpServer();
+
             ReloadHttpServer();
 
             if (!SupportsNativeWebSocket)
@@ -268,6 +269,9 @@ namespace MediaBrowser.Server.Implementations.ServerManager
             {
                 // The port number can't be in configuration because we don't want it to ever change
                 UdpServer = _applicationHost.Resolve<IUdpServer>();
+
+                _logger.Info("Starting udp server");
+
                 UdpServer.Start(_kernel.UdpServerPortNumber);
             }
             catch (SocketException ex)
@@ -428,6 +432,8 @@ namespace MediaBrowser.Server.Implementations.ServerManager
         /// </summary>
         private void RegisterServerWithAdministratorAccess()
         {
+            _logger.Info("Requesting administrative access to authorize http server");
+
             // Create a temp file path to extract the bat file to
             var tmpFile = Path.Combine(ConfigurationManager.CommonApplicationPaths.TempDirectory, Guid.NewGuid() + ".bat");