Explorar o código

added IsIdRoot helper

Luke Pulverenti %!s(int64=10) %!d(string=hai) anos
pai
achega
402e80dac3

+ 2 - 5
MediaBrowser.Dlna/ContentDirectory/ControlHandler.cs

@@ -241,7 +241,7 @@ namespace MediaBrowser.Dlna.ContentDirectory
             {
                 new KeyValuePair<string,string>("Result", resXML),
                 new KeyValuePair<string,string>("NumberReturned", provided.ToString(_usCulture)),
-                new KeyValuePair<string,string>("TotalMatches", id == "0" ? "1" :totalCount.ToString(_usCulture)),
+                new KeyValuePair<string,string>("TotalMatches", DidlBuilder.IsIdRoot(id) ? "1" :totalCount.ToString(_usCulture)),
                 new KeyValuePair<string,string>("UpdateID", _systemUpdateId.ToString(_usCulture))
             };
         }
@@ -535,10 +535,7 @@ namespace MediaBrowser.Dlna.ContentDirectory
 
         private BaseItem GetItemFromObjectId(string id, User user)
         {
-            return string.IsNullOrWhiteSpace(id) || string.Equals(id, "0", StringComparison.OrdinalIgnoreCase)
-
-                 // Samsung sometimes uses 1 as root
-                 || string.Equals(id, "1", StringComparison.OrdinalIgnoreCase)
+            return DidlBuilder.IsIdRoot(id)
 
                  ? user.RootFolder
                  : ParseItemId(id, user);

+ 28 - 10
MediaBrowser.Dlna/Didl/DidlBuilder.cs

@@ -362,28 +362,46 @@ namespace MediaBrowser.Dlna.Didl
             container.AppendChild(res);
         }
 
+        public static bool IsIdRoot(string id)
+        {
+            if (string.IsNullOrWhiteSpace(id) || 
+                
+                string.Equals(id, "0", StringComparison.OrdinalIgnoreCase)
+
+                // Samsung sometimes uses 1 as root
+                || string.Equals(id, "1", StringComparison.OrdinalIgnoreCase))
+            {
+                return true;
+            }
+
+            return false;
+        }
+
         public XmlElement GetFolderElement(XmlDocument doc, Folder folder, int childCount, Filter filter, string requestedId = null)
         {
             var container = doc.CreateElement(string.Empty, "container", NS_DIDL);
             container.SetAttribute("restricted", "0");
             container.SetAttribute("searchable", "1");
             container.SetAttribute("childCount", childCount.ToString(_usCulture));
-            container.SetAttribute("id", folder.Id.ToString("N"));
 
-            var parent = folder.Parent;
-            if (parent == null)
+            if (string.Equals(requestedId, "0"))
             {
-                container.SetAttribute("parentID", "0");
+                container.SetAttribute("id", "0");
+                container.SetAttribute("parentID", "-1");
             }
             else
             {
-                container.SetAttribute("parentID", parent.Id.ToString("N"));
-            }
+                container.SetAttribute("id", folder.Id.ToString("N"));
 
-            if (requestedId == "0")
-            {
-                container.SetAttribute("id","0");
-                container.SetAttribute("parentID", "-1");
+                var parent = folder.Parent;
+                if (parent == null)
+                {
+                    container.SetAttribute("parentID", "0");
+                }
+                else
+                {
+                    container.SetAttribute("parentID", parent.Id.ToString("N"));
+                }
             }
 
             AddCommonFields(folder, container, filter);