|
@@ -257,75 +257,77 @@ namespace Emby.Dlna.ContentDirectory
|
|
|
|
|
|
int totalCount;
|
|
|
|
|
|
- var settings = new XmlWriterSettings()
|
|
|
- {
|
|
|
- Encoding = Encoding.UTF8,
|
|
|
- CloseOutput = false,
|
|
|
- OmitXmlDeclaration = true,
|
|
|
- ConformanceLevel = ConformanceLevel.Fragment
|
|
|
- };
|
|
|
-
|
|
|
using (StringWriter builder = new StringWriterWithEncoding(Encoding.UTF8))
|
|
|
- using (var writer = XmlWriter.Create(builder, settings))
|
|
|
{
|
|
|
- writer.WriteStartElement(string.Empty, "DIDL-Lite", NS_DIDL);
|
|
|
-
|
|
|
- writer.WriteAttributeString("xmlns", "dc", null, NS_DC);
|
|
|
- writer.WriteAttributeString("xmlns", "dlna", null, NS_DLNA);
|
|
|
- writer.WriteAttributeString("xmlns", "upnp", null, NS_UPNP);
|
|
|
-
|
|
|
- DidlBuilder.WriteXmlRootAttributes(_profile, writer);
|
|
|
-
|
|
|
- var serverItem = GetItemFromObjectId(id, _user);
|
|
|
- var item = serverItem.Item;
|
|
|
-
|
|
|
+ var settings = new XmlWriterSettings()
|
|
|
+ {
|
|
|
+ Encoding = Encoding.UTF8,
|
|
|
+ CloseOutput = false,
|
|
|
+ OmitXmlDeclaration = true,
|
|
|
+ ConformanceLevel = ConformanceLevel.Fragment
|
|
|
+ };
|
|
|
|
|
|
- if (string.Equals(flag, "BrowseMetadata", StringComparison.Ordinal))
|
|
|
+ using (var writer = XmlWriter.Create(builder, settings))
|
|
|
{
|
|
|
- totalCount = 1;
|
|
|
+ writer.WriteStartElement(string.Empty, "DIDL-Lite", NS_DIDL);
|
|
|
|
|
|
- if (item.IsDisplayedAsFolder || serverItem.StubType.HasValue)
|
|
|
- {
|
|
|
- var childrenResult = GetUserItems(item, serverItem.StubType, _user, sortCriteria, start, requestedCount);
|
|
|
+ writer.WriteAttributeString("xmlns", "dc", null, NS_DC);
|
|
|
+ writer.WriteAttributeString("xmlns", "dlna", null, NS_DLNA);
|
|
|
+ writer.WriteAttributeString("xmlns", "upnp", null, NS_UPNP);
|
|
|
|
|
|
- _didlBuilder.WriteFolderElement(writer, item, serverItem.StubType, null, childrenResult.TotalRecordCount, filter, id);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- var dlnaOptions = _config.GetDlnaConfiguration();
|
|
|
- _didlBuilder.WriteItemElement(dlnaOptions, writer, item, _user, null, null, deviceId, filter);
|
|
|
- }
|
|
|
+ DidlBuilder.WriteXmlRootAttributes(_profile, writer);
|
|
|
|
|
|
- provided++;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- var childrenResult = GetUserItems(item, serverItem.StubType, _user, sortCriteria, start, requestedCount);
|
|
|
- totalCount = childrenResult.TotalRecordCount;
|
|
|
+ var serverItem = GetItemFromObjectId(id, _user);
|
|
|
+ var item = serverItem.Item;
|
|
|
|
|
|
- provided = childrenResult.Items.Count;
|
|
|
|
|
|
- var dlnaOptions = _config.GetDlnaConfiguration();
|
|
|
- foreach (var i in childrenResult.Items)
|
|
|
+ if (string.Equals(flag, "BrowseMetadata", StringComparison.Ordinal))
|
|
|
{
|
|
|
- var childItem = i.Item;
|
|
|
- var displayStubType = i.StubType;
|
|
|
+ totalCount = 1;
|
|
|
|
|
|
- if (childItem.IsDisplayedAsFolder || displayStubType.HasValue)
|
|
|
+ if (item.IsDisplayedAsFolder || serverItem.StubType.HasValue)
|
|
|
{
|
|
|
- var childCount = GetUserItems(childItem, displayStubType, _user, sortCriteria, null, 0)
|
|
|
- .TotalRecordCount;
|
|
|
+ var childrenResult = GetUserItems(item, serverItem.StubType, _user, sortCriteria, start, requestedCount);
|
|
|
|
|
|
- _didlBuilder.WriteFolderElement(writer, childItem, displayStubType, item, childCount, filter);
|
|
|
+ _didlBuilder.WriteFolderElement(writer, item, serverItem.StubType, null, childrenResult.TotalRecordCount, filter, id);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- _didlBuilder.WriteItemElement(dlnaOptions, writer, childItem, _user, item, serverItem.StubType, deviceId, filter);
|
|
|
+ var dlnaOptions = _config.GetDlnaConfiguration();
|
|
|
+ _didlBuilder.WriteItemElement(dlnaOptions, writer, item, _user, null, null, deviceId, filter);
|
|
|
}
|
|
|
+
|
|
|
+ provided++;
|
|
|
}
|
|
|
- }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ var childrenResult = GetUserItems(item, serverItem.StubType, _user, sortCriteria, start, requestedCount);
|
|
|
+ totalCount = childrenResult.TotalRecordCount;
|
|
|
+
|
|
|
+ provided = childrenResult.Items.Count;
|
|
|
|
|
|
- writer.WriteFullEndElement();
|
|
|
+ var dlnaOptions = _config.GetDlnaConfiguration();
|
|
|
+ foreach (var i in childrenResult.Items)
|
|
|
+ {
|
|
|
+ var childItem = i.Item;
|
|
|
+ var displayStubType = i.StubType;
|
|
|
+
|
|
|
+ if (childItem.IsDisplayedAsFolder || displayStubType.HasValue)
|
|
|
+ {
|
|
|
+ var childCount = GetUserItems(childItem, displayStubType, _user, sortCriteria, null, 0)
|
|
|
+ .TotalRecordCount;
|
|
|
+
|
|
|
+ _didlBuilder.WriteFolderElement(writer, childItem, displayStubType, item, childCount, filter);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ _didlBuilder.WriteItemElement(dlnaOptions, writer, childItem, _user, item, serverItem.StubType, deviceId, filter);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ writer.WriteFullEndElement();
|
|
|
+ }
|
|
|
|
|
|
xmlWriter.WriteElementString("Result", builder.ToString());
|
|
|
}
|
|
@@ -366,49 +368,51 @@ namespace Emby.Dlna.ContentDirectory
|
|
|
|
|
|
QueryResult<BaseItem> childrenResult;
|
|
|
|
|
|
- var settings = new XmlWriterSettings()
|
|
|
- {
|
|
|
- Encoding = Encoding.UTF8,
|
|
|
- CloseOutput = false,
|
|
|
- OmitXmlDeclaration = true,
|
|
|
- ConformanceLevel = ConformanceLevel.Fragment
|
|
|
- };
|
|
|
-
|
|
|
using (StringWriter builder = new StringWriterWithEncoding(Encoding.UTF8))
|
|
|
- using (var writer = XmlWriter.Create(builder, settings))
|
|
|
{
|
|
|
- writer.WriteStartElement(string.Empty, "DIDL-Lite", NS_DIDL);
|
|
|
+ var settings = new XmlWriterSettings()
|
|
|
+ {
|
|
|
+ Encoding = Encoding.UTF8,
|
|
|
+ CloseOutput = false,
|
|
|
+ OmitXmlDeclaration = true,
|
|
|
+ ConformanceLevel = ConformanceLevel.Fragment
|
|
|
+ };
|
|
|
|
|
|
- writer.WriteAttributeString("xmlns", "dc", null, NS_DC);
|
|
|
- writer.WriteAttributeString("xmlns", "dlna", null, NS_DLNA);
|
|
|
- writer.WriteAttributeString("xmlns", "upnp", null, NS_UPNP);
|
|
|
+ using (var writer = XmlWriter.Create(builder, settings))
|
|
|
+ {
|
|
|
+ writer.WriteStartElement(string.Empty, "DIDL-Lite", NS_DIDL);
|
|
|
|
|
|
- DidlBuilder.WriteXmlRootAttributes(_profile, writer);
|
|
|
+ writer.WriteAttributeString("xmlns", "dc", null, NS_DC);
|
|
|
+ writer.WriteAttributeString("xmlns", "dlna", null, NS_DLNA);
|
|
|
+ writer.WriteAttributeString("xmlns", "upnp", null, NS_UPNP);
|
|
|
|
|
|
- var serverItem = GetItemFromObjectId(sparams["ContainerID"], _user);
|
|
|
+ DidlBuilder.WriteXmlRootAttributes(_profile, writer);
|
|
|
|
|
|
- var item = serverItem.Item;
|
|
|
+ var serverItem = GetItemFromObjectId(sparams["ContainerID"], _user);
|
|
|
|
|
|
- childrenResult = GetChildrenSorted(item, _user, searchCriteria, sortCriteria, start, requestedCount);
|
|
|
+ var item = serverItem.Item;
|
|
|
|
|
|
- var dlnaOptions = _config.GetDlnaConfiguration();
|
|
|
+ childrenResult = GetChildrenSorted(item, _user, searchCriteria, sortCriteria, start, requestedCount);
|
|
|
|
|
|
- foreach (var i in childrenResult.Items)
|
|
|
- {
|
|
|
- if (i.IsDisplayedAsFolder)
|
|
|
- {
|
|
|
- var childCount = GetChildrenSorted(i, _user, searchCriteria, sortCriteria, null, 0)
|
|
|
- .TotalRecordCount;
|
|
|
+ var dlnaOptions = _config.GetDlnaConfiguration();
|
|
|
|
|
|
- _didlBuilder.WriteFolderElement(writer, i, null, item, childCount, filter);
|
|
|
- }
|
|
|
- else
|
|
|
+ foreach (var i in childrenResult.Items)
|
|
|
{
|
|
|
- _didlBuilder.WriteItemElement(dlnaOptions, writer, i, _user, item, serverItem.StubType, deviceId, filter);
|
|
|
+ if (i.IsDisplayedAsFolder)
|
|
|
+ {
|
|
|
+ var childCount = GetChildrenSorted(i, _user, searchCriteria, sortCriteria, null, 0)
|
|
|
+ .TotalRecordCount;
|
|
|
+
|
|
|
+ _didlBuilder.WriteFolderElement(writer, i, null, item, childCount, filter);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ _didlBuilder.WriteItemElement(dlnaOptions, writer, i, _user, item, serverItem.StubType, deviceId, filter);
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- writer.WriteFullEndElement();
|
|
|
+ writer.WriteFullEndElement();
|
|
|
+ }
|
|
|
|
|
|
xmlWriter.WriteElementString("Result", builder.ToString());
|
|
|
}
|