diff options
Diffstat (limited to 'MediaBrowser.Dlna/Server/DescriptionXmlBuilder.cs')
| -rw-r--r-- | MediaBrowser.Dlna/Server/DescriptionXmlBuilder.cs | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/MediaBrowser.Dlna/Server/DescriptionXmlBuilder.cs b/MediaBrowser.Dlna/Server/DescriptionXmlBuilder.cs index ae544cb6c..824032689 100644 --- a/MediaBrowser.Dlna/Server/DescriptionXmlBuilder.cs +++ b/MediaBrowser.Dlna/Server/DescriptionXmlBuilder.cs @@ -1,8 +1,10 @@ using MediaBrowser.Dlna.Common; using MediaBrowser.Model.Dlna; +using MediaBrowser.Model.Extensions; using System; using System.Collections.Generic; using System.Globalization; +using System.Linq; using System.Security; using System.Text; @@ -15,8 +17,9 @@ namespace MediaBrowser.Dlna.Server private readonly CultureInfo _usCulture = new CultureInfo("en-US"); private readonly string _serverUdn; private readonly string _serverAddress; + private readonly string _serverName; - public DescriptionXmlBuilder(DeviceProfile profile, string serverUdn, string serverAddress) + public DescriptionXmlBuilder(DeviceProfile profile, string serverUdn, string serverAddress, string serverName) { if (string.IsNullOrWhiteSpace(serverUdn)) { @@ -31,6 +34,7 @@ namespace MediaBrowser.Dlna.Server _profile = profile; _serverUdn = serverUdn; _serverAddress = serverAddress; + _serverName = serverName; } private bool EnableAbsoluteUrls @@ -81,7 +85,7 @@ namespace MediaBrowser.Dlna.Server builder.Append("<dlna:X_DLNADOC xmlns:dlna=\"urn:schemas-dlna-org:device-1-0\">M-DMS-1.50</dlna:X_DLNADOC>"); builder.Append("<dlna:X_DLNADOC xmlns:dlna=\"urn:schemas-dlna-org:device-1-0\">" + SecurityElement.Escape(_profile.XDlnaDoc ?? string.Empty) + "</dlna:X_DLNADOC>"); - builder.Append("<friendlyName>" + SecurityElement.Escape(_profile.FriendlyName ?? string.Empty) + "</friendlyName>"); + builder.Append("<friendlyName>" + SecurityElement.Escape(GetFriendlyName()) + "</friendlyName>"); builder.Append("<deviceType>urn:schemas-upnp-org:device:MediaServer:1</deviceType>"); builder.Append("<manufacturer>" + SecurityElement.Escape(_profile.Manufacturer ?? string.Empty) + "</manufacturer>"); builder.Append("<manufacturerURL>" + SecurityElement.Escape(_profile.ManufacturerUrl ?? string.Empty) + "</manufacturerURL>"); @@ -95,7 +99,7 @@ namespace MediaBrowser.Dlna.Server if (!EnableAbsoluteUrls) { - builder.Append("<URLBase>" + SecurityElement.Escape(_serverAddress) + "</URLBase>"); + //builder.Append("<URLBase>" + SecurityElement.Escape(_serverAddress) + "</URLBase>"); } if (!string.IsNullOrWhiteSpace(_profile.SonyAggregationFlags)) @@ -104,6 +108,19 @@ namespace MediaBrowser.Dlna.Server } } + private string GetFriendlyName() + { + var name = _profile.FriendlyName ?? string.Empty; + + var characters = _serverName.Where(c => (char.IsLetterOrDigit(c) || c == '-')).ToArray(); + + var serverName = new string(characters); + + name = name.Replace("${ServerName}", serverName, StringComparison.OrdinalIgnoreCase); + + return name; + } + private void AppendIconList(StringBuilder builder) { builder.Append("<iconList>"); |
