public static UpnpServiceDescriptionInfo FromXmlScpdNode(XElement aScpdNode)
        {
            var instance = new UpnpServiceDescriptionInfo();

            instance.SpecVersion = Version.FromServiceXmlVersionElement(aScpdNode.Element(UpnpServiceXml.SpecVersionElement));
            var actionList = new List <UpnpServiceActionInfo>();

            instance.Actions = actionList;
            var variableList = new List <UpnpServiceStateVariableInfo>();

            instance.StateVariables = variableList;
            var actionListNode = aScpdNode.Element(UpnpServiceXml.ActionListElement);

            if (actionListNode != null)
            {
                foreach (var actionNode in actionListNode.Elements(UpnpServiceXml.ActionElement))
                {
                    actionList.Add(UpnpServiceActionInfo.FromXmlActionNode(actionNode));
                }
            }
            var variableListNode = aScpdNode.Element(UpnpServiceXml.ServiceStateTableElement);

            if (variableListNode != null)
            {
                foreach (var variableNode in variableListNode.Elements(UpnpServiceXml.StateVariableElement))
                {
                    variableList.Add(UpnpServiceStateVariableInfo.FromXmlVariableNode(variableNode));
                }
            }
            return(instance);
        }
Exemple #2
0
        public static UpnpServiceInfo FromXmlServiceNode(XElement aServiceNode, Uri aDocUri, IHttpFetcher aFetcher)
        {
            var instance = new UpnpServiceInfo();

            foreach (var item in aServiceNode.Elements())
            {
                if (item.Name == UpnpDeviceXml.ServiceTypeElement)
                {
                    instance.ServiceType = item.Value;
                }
                if (item.Name == UpnpDeviceXml.ServiceIdElement)
                {
                    instance.ServiceId = item.Value;
                }
                if (item.Name == UpnpDeviceXml.SCPDURLElement)
                {
                    instance.SCPDURL = item.Value;
                    Uri absoluteUri;
                    if (Uri.TryCreate(aDocUri, instance.SCPDURL, out absoluteUri))
                    {
                        instance.DescriptionXml = aFetcher.SynchronousGetRequest(absoluteUri);
                        var descriptionDoc = XDocument.Parse(instance.DescriptionXml);
                        instance.Description = UpnpServiceDescriptionInfo.FromXmlScpdNode(descriptionDoc.Root);
                    }
                }
                if (item.Name == UpnpDeviceXml.ControlURLElement)
                {
                    instance.ControlURL = item.Value;
                }
                if (item.Name == UpnpDeviceXml.EventSubURLElement)
                {
                    instance.EventSubURL = item.Value;
                }
            }
            return(instance);
        }
 public static UpnpServiceDescriptionInfo FromXmlScpdNode(XElement aScpdNode)
 {
     var instance = new UpnpServiceDescriptionInfo();
     instance.SpecVersion = Version.FromServiceXmlVersionElement(aScpdNode.Element(UpnpServiceXml.SpecVersionElement));
     var actionList = new List<UpnpServiceActionInfo>();
     instance.Actions = actionList;
     var variableList = new List<UpnpServiceStateVariableInfo>();
     instance.StateVariables = variableList;
     var actionListNode = aScpdNode.Element(UpnpServiceXml.ActionListElement);
     if (actionListNode != null)
     {
         foreach (var actionNode in actionListNode.Elements(UpnpServiceXml.ActionElement))
         {
             actionList.Add(UpnpServiceActionInfo.FromXmlActionNode(actionNode));
         }
     }
     var variableListNode = aScpdNode.Element(UpnpServiceXml.ServiceStateTableElement);
     if (variableListNode != null)
     {
         foreach (var variableNode in variableListNode.Elements(UpnpServiceXml.StateVariableElement))
         {
             variableList.Add(UpnpServiceStateVariableInfo.FromXmlVariableNode(variableNode));
         }
     }
     return instance;
 }