ソースを参照

allow separate configuration of app resources path

Luke Pulverenti 10 年 前
コミット
63a0d52fd1

+ 2 - 14
MediaBrowser.Common.Implementations/BaseApplicationPaths.cs

@@ -14,24 +14,12 @@ namespace MediaBrowser.Common.Implementations
         /// </summary>
         protected BaseApplicationPaths(string programDataPath, string applicationPath)
         {
-            _programDataPath = programDataPath;
+            ProgramDataPath = programDataPath;
             ApplicationPath = applicationPath;
         }
 
         public string ApplicationPath { get; private set; }
-
-        /// <summary>
-        /// The _program data path
-        /// </summary>
-        private readonly string _programDataPath;
-        /// <summary>
-        /// Gets the path to the program data folder
-        /// </summary>
-        /// <value>The program data path.</value>
-        public string ProgramDataPath
-        {
-            get { return _programDataPath; }
-        }
+        public string ProgramDataPath { get; private set; }
 
         /// <summary>
         /// Gets the path to the system folder

+ 7 - 0
MediaBrowser.Controller/IServerApplicationPaths.cs

@@ -10,6 +10,13 @@ namespace MediaBrowser.Controller
         /// <value>The root folder path.</value>
         string RootFolderPath { get; }
 
+        /// <summary>
+        /// Gets the application resources path. This is the path to the folder containing resources that are deployed as part of the application
+        /// For example, this folder contains dashboard-ui and swagger-ui
+        /// </summary>
+        /// <value>The application resources path.</value>
+        string ApplicationResourcesPath { get; }
+        
         /// <summary>
         /// Gets the path to the default user view directory.  Used if no specific user view is defined.
         /// </summary>

+ 4 - 6
MediaBrowser.Server.Implementations/HttpServer/SwaggerService.cs

@@ -1,4 +1,4 @@
-using MediaBrowser.Common.Configuration;
+using MediaBrowser.Controller;
 using MediaBrowser.Controller.Net;
 using ServiceStack.Web;
 using System.IO;
@@ -7,9 +7,9 @@ namespace MediaBrowser.Server.Implementations.HttpServer
 {
     public class SwaggerService : IHasResultFactory, IRestfulService
     {
-        private readonly IApplicationPaths _appPaths;
+        private readonly IServerApplicationPaths _appPaths;
 
-        public SwaggerService(IApplicationPaths appPaths)
+        public SwaggerService(IServerApplicationPaths appPaths)
         {
             _appPaths = appPaths;
         }
@@ -21,9 +21,7 @@ namespace MediaBrowser.Server.Implementations.HttpServer
         /// <returns>System.Object.</returns>
         public object Get(GetSwaggerResource request)
         {
-            var runningDirectory = Path.GetDirectoryName(_appPaths.ApplicationPath);
-
-            var swaggerDirectory = Path.Combine(runningDirectory, "swagger-ui");
+            var swaggerDirectory = Path.Combine(_appPaths.ApplicationResourcesPath, "swagger-ui");
 
             var requestedFile = Path.Combine(swaggerDirectory, request.ResourceName.Replace('/', Path.DirectorySeparatorChar));
 

+ 4 - 2
MediaBrowser.Server.Implementations/ServerApplicationPaths.cs

@@ -12,12 +12,14 @@ namespace MediaBrowser.Server.Implementations
         /// <summary>
         /// Initializes a new instance of the <see cref="BaseApplicationPaths" /> class.
         /// </summary>
-        public ServerApplicationPaths(string programDataPath, string applicationPath)
+        public ServerApplicationPaths(string programDataPath, string applicationPath, string applicationResourcesPath)
             : base(programDataPath, applicationPath)
         {
-
+            ApplicationResourcesPath = applicationResourcesPath;
         }
 
+        public string ApplicationResourcesPath { get; private set; }
+
         /// <summary>
         /// Gets the path to the base root media directory
         /// </summary>

+ 3 - 2
MediaBrowser.Server.Mono/Program.cs

@@ -1,3 +1,4 @@
+using System.IO;
 using MediaBrowser.Common.Implementations.IO;
 using MediaBrowser.Common.Implementations.Logging;
 using MediaBrowser.Model.Logging;
@@ -58,10 +59,10 @@ namespace MediaBrowser.Server.Mono
 		{
 			if (string.IsNullOrEmpty(programDataPath))
 			{
-				return new ServerApplicationPaths(ApplicationPathHelper.GetProgramDataPath(applicationPath), applicationPath);
+			    programDataPath = ApplicationPathHelper.GetProgramDataPath(applicationPath);
 			}
 			
-			return new ServerApplicationPaths(programDataPath, applicationPath);
+			return new ServerApplicationPaths(programDataPath, applicationPath, Path.GetDirectoryName(applicationPath));
 		}
 
 		private static readonly TaskCompletionSource<bool> ApplicationTaskCompletionSource = new TaskCompletionSource<bool>();

+ 4 - 2
MediaBrowser.ServerApplication/MainStartup.cs

@@ -153,16 +153,18 @@ namespace MediaBrowser.ServerApplication
         /// <returns>ServerApplicationPaths.</returns>
         private static ServerApplicationPaths CreateApplicationPaths(string applicationPath, bool runAsService)
         {
+            var resourcesPath = Path.GetDirectoryName(applicationPath);
+
             if (runAsService)
             {
                 var systemPath = Path.GetDirectoryName(applicationPath);
 
                 var programDataPath = Path.GetDirectoryName(systemPath);
 
-                return new ServerApplicationPaths(programDataPath, applicationPath);
+                return new ServerApplicationPaths(programDataPath, applicationPath, resourcesPath);
             }
 
-            return new ServerApplicationPaths(ApplicationPathHelper.GetProgramDataPath(applicationPath), applicationPath);
+            return new ServerApplicationPaths(ApplicationPathHelper.GetProgramDataPath(applicationPath), applicationPath, resourcesPath);
         }
 
         /// <summary>

+ 1 - 3
MediaBrowser.WebDashboard/Api/PackageCreator.cs

@@ -87,9 +87,7 @@ namespace MediaBrowser.WebDashboard.Api
                     return _config.Configuration.DashboardSourcePath;
                 }
 
-                var runningDirectory = Path.GetDirectoryName(_config.ApplicationPaths.ApplicationPath);
-
-                return Path.Combine(runningDirectory, "dashboard-ui");
+                return Path.Combine(_config.ApplicationPaths.ApplicationResourcesPath, "dashboard-ui");
             }
         }