#pragma warning disable CS1591 using System.Collections.Generic; using System.Security; using System.Text; using Emby.Dlna.Common; 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("") .Append(SecurityElement.Escape(item.Name)) .Append(""); builder.Append(""); foreach (var argument in item.ArgumentList) { builder.Append(""); builder.Append("") .Append(SecurityElement.Escape(argument.Name)) .Append(""); builder.Append("") .Append(SecurityElement.Escape(argument.Direction)) .Append(""); builder.Append("") .Append(SecurityElement.Escape(argument.RelatedStateVariable)) .Append(""); 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("") .Append(SecurityElement.Escape(item.Name)) .Append(""); builder.Append("") .Append(SecurityElement.Escape(item.DataType)) .Append(""); if (item.AllowedValues.Count > 0) { builder.Append(""); foreach (var allowedValue in item.AllowedValues) { builder.Append("") .Append(SecurityElement.Escape(allowedValue)) .Append(""); } builder.Append(""); } builder.Append(""); } builder.Append(""); } } }