#pragma warning disable CS1591 using System.Collections.Generic; using System.Text; using Emby.Dlna.Common; using Emby.Dlna.Server; namespace Emby.Dlna.Service { public class ServiceXmlBuilder { public string GetXml(IEnumerable actions, IEnumerable stateVariables) { var builder = new StringBuilder(); builder.Append(""); builder.Append(""); builder.Append(""); builder.Append("1"); builder.Append("0"); builder.Append(""); AppendActionList(builder, actions); AppendServiceStateTable(builder, stateVariables); builder.Append(""); return builder.ToString(); } private static void AppendActionList(StringBuilder builder, IEnumerable actions) { builder.Append(""); foreach (var item in actions) { builder.Append(""); builder.Append("" + DescriptionXmlBuilder.Escape(item.Name ?? string.Empty) + ""); builder.Append(""); foreach (var argument in item.ArgumentList) { builder.Append(""); builder.Append("" + DescriptionXmlBuilder.Escape(argument.Name ?? string.Empty) + ""); builder.Append("" + DescriptionXmlBuilder.Escape(argument.Direction ?? string.Empty) + ""); builder.Append("" + DescriptionXmlBuilder.Escape(argument.RelatedStateVariable ?? string.Empty) + ""); builder.Append(""); } builder.Append(""); builder.Append(""); } builder.Append(""); } private static void AppendServiceStateTable(StringBuilder builder, IEnumerable stateVariables) { builder.Append(""); foreach (var item in stateVariables) { var sendEvents = item.SendsEvents ? "yes" : "no"; builder.Append(""); builder.Append("" + DescriptionXmlBuilder.Escape(item.Name ?? string.Empty) + ""); builder.Append("" + DescriptionXmlBuilder.Escape(item.DataType ?? string.Empty) + ""); if (item.AllowedValues.Length > 0) { builder.Append(""); foreach (var allowedValue in item.AllowedValues) { builder.Append("" + DescriptionXmlBuilder.Escape(allowedValue) + ""); } builder.Append(""); } builder.Append(""); } builder.Append(""); } } }