Browse Source

Merge pull request #2008 from Bond-009/pathvalue

Fix GetPathValue function

(cherry picked from commit c87f459ec2f0882483716363b35c8a371c00d55a)
Signed-off-by: Joshua Boniface <joshua@boniface.me>
dkanada 5 years ago
parent
commit
fb6b103164

+ 25 - 8
Emby.Dlna/Api/DlnaServerService.cs

@@ -6,6 +6,7 @@ using System.Text;
 using System.Threading.Tasks;
 using Emby.Dlna.Main;
 using MediaBrowser.Common.Extensions;
+using MediaBrowser.Controller.Configuration;
 using MediaBrowser.Controller.Dlna;
 using MediaBrowser.Controller.Net;
 using MediaBrowser.Model.Services;
@@ -108,12 +109,13 @@ namespace Emby.Dlna.Api
 
     public class DlnaServerService : IService, IRequiresRequest
     {
-        private readonly IDlnaManager _dlnaManager;
-
         private const string XMLContentType = "text/xml; charset=UTF-8";
 
+        private readonly IDlnaManager _dlnaManager;
+        private readonly IHttpResultFactory _resultFactory;
+        private readonly IServerConfigurationManager _configurationManager;
+
         public IRequest Request { get; set; }
-        private IHttpResultFactory _resultFactory;
 
         private IContentDirectory ContentDirectory => DlnaEntryPoint.Current.ContentDirectory;
 
@@ -121,10 +123,14 @@ namespace Emby.Dlna.Api
 
         private IMediaReceiverRegistrar MediaReceiverRegistrar => DlnaEntryPoint.Current.MediaReceiverRegistrar;
 
-        public DlnaServerService(IDlnaManager dlnaManager, IHttpResultFactory httpResultFactory)
+        public DlnaServerService(
+            IDlnaManager dlnaManager,
+            IHttpResultFactory httpResultFactory,
+            IServerConfigurationManager configurationManager)
         {
             _dlnaManager = dlnaManager;
             _resultFactory = httpResultFactory;
+            _configurationManager = configurationManager;
         }
 
         private string GetHeader(string name)
@@ -205,14 +211,25 @@ namespace Emby.Dlna.Api
             var pathInfo = Parse(Request.PathInfo);
             var first = pathInfo[0];
 
+            string baseUrl = _configurationManager.Configuration.BaseUrl;
+
             // backwards compatibility
-            // TODO: Work out what this is doing.
-            if (string.Equals(first, "mediabrowser", StringComparison.OrdinalIgnoreCase) ||
-                string.Equals(first, "emby", StringComparison.OrdinalIgnoreCase) ||
-                string.Equals(first, "jellyfin", StringComparison.OrdinalIgnoreCase))
+            if (baseUrl.Length == 0
+                && (string.Equals(first, "mediabrowser", StringComparison.OrdinalIgnoreCase)
+                    || string.Equals(first, "emby", StringComparison.OrdinalIgnoreCase)))
             {
                 index++;
             }
+            else if (string.Equals(first, baseUrl))
+            {
+                index++;
+                var second = pathInfo[1];
+                if (string.Equals(second, "mediabrowser", StringComparison.OrdinalIgnoreCase)
+                    || string.Equals(second, "emby", StringComparison.OrdinalIgnoreCase))
+                {
+                    index++;
+                }
+            }
 
             return pathInfo[index];
         }

+ 0 - 2
Emby.Server.Implementations/HttpServer/HttpListenerHost.cs

@@ -7,7 +7,6 @@ using System.Net.Sockets;
 using System.Reflection;
 using System.Threading;
 using System.Threading.Tasks;
-using Emby.Server.Implementations.Configuration;
 using Emby.Server.Implementations.Net;
 using Emby.Server.Implementations.Services;
 using MediaBrowser.Common.Extensions;
@@ -16,7 +15,6 @@ using MediaBrowser.Controller;
 using MediaBrowser.Controller.Configuration;
 using MediaBrowser.Controller.Net;
 using MediaBrowser.Model.Events;
-using MediaBrowser.Model.Extensions;
 using MediaBrowser.Model.Serialization;
 using MediaBrowser.Model.Services;
 using Microsoft.AspNetCore.Http;

+ 5 - 8
MediaBrowser.Api/ApiEntryPoint.cs

@@ -40,14 +40,13 @@ namespace MediaBrowser.Api
         internal IHttpResultFactory ResultFactory { get; private set; }
 
         /// <summary>
-        /// The application paths
+        /// Gets the configuration manager.
         /// </summary>
-        private readonly IServerConfigurationManager _config;
+        internal IServerConfigurationManager ConfigurationManager { get; }
 
         private readonly ISessionManager _sessionManager;
         private readonly IFileSystem _fileSystem;
         private readonly IMediaSourceManager _mediaSourceManager;
-        public readonly IProcessFactory ProcessFactory;
 
         /// <summary>
         /// The active transcoding jobs
@@ -73,15 +72,13 @@ namespace MediaBrowser.Api
             IServerConfigurationManager config,
             IFileSystem fileSystem,
             IMediaSourceManager mediaSourceManager,
-            IProcessFactory processFactory,
             IHttpResultFactory resultFactory)
         {
             Logger = logger;
             _sessionManager = sessionManager;
-            _config = config;
+            ConfigurationManager = config;
             _fileSystem = fileSystem;
             _mediaSourceManager = mediaSourceManager;
-            ProcessFactory = processFactory;
             ResultFactory = resultFactory;
 
             _sessionManager.PlaybackProgress += _sessionManager_PlaybackProgress;
@@ -162,7 +159,7 @@ namespace MediaBrowser.Api
 
         public EncodingOptions GetEncodingOptions()
         {
-            return ConfigurationManagerExtensions.GetConfiguration<EncodingOptions>(_config, "encoding");
+            return ConfigurationManagerExtensions.GetConfiguration<EncodingOptions>(ConfigurationManager, "encoding");
         }
 
         /// <summary>
@@ -170,7 +167,7 @@ namespace MediaBrowser.Api
         /// </summary>
         private void DeleteEncodedMediaCache()
         {
-            var path = _config.ApplicationPaths.GetTranscodingTempPath();
+            var path = ConfigurationManager.ApplicationPaths.GetTranscodingTempPath();
 
             if (!Directory.Exists(path))
             {

+ 15 - 3
MediaBrowser.Api/BaseApiService.cs

@@ -1,5 +1,4 @@
 using System;
-using System.Collections.Generic;
 using System.Linq;
 using MediaBrowser.Controller.Dto;
 using MediaBrowser.Controller.Entities;
@@ -298,11 +297,24 @@ namespace MediaBrowser.Api
             var pathInfo = Parse(Request.PathInfo);
             var first = pathInfo[0];
 
+            string baseUrl = ApiEntryPoint.Instance.ConfigurationManager.Configuration.BaseUrl;
+
             // backwards compatibility
-            if (string.Equals(first, "mediabrowser", StringComparison.OrdinalIgnoreCase) ||
-                string.Equals(first, "emby", StringComparison.OrdinalIgnoreCase))
+            if (baseUrl.Length == 0
+                && (string.Equals(first, "mediabrowser", StringComparison.OrdinalIgnoreCase)
+                    || string.Equals(first, "emby", StringComparison.OrdinalIgnoreCase)))
+            {
+                index++;
+            }
+            else if (string.Equals(first, baseUrl))
             {
                 index++;
+                var second = pathInfo[1];
+                if (string.Equals(second, "mediabrowser", StringComparison.OrdinalIgnoreCase)
+                    || string.Equals(second, "emby", StringComparison.OrdinalIgnoreCase))
+                {
+                    index++;
+                }
             }
 
             return pathInfo[index];