public static TransportCommands Create(XDocument document) { var command = new TransportCommands(); var actionList = document.Descendants(uPnpNamespaces.svc + "actionList"); foreach (var container in actionList.Descendants(uPnpNamespaces.svc + "action")) { command.ServiceActions.Add(ServiceActionFromXml(container)); } var stateValues = document.Descendants(uPnpNamespaces.ServiceStateTable).FirstOrDefault(); if (stateValues != null) { foreach (var container in stateValues.Elements(uPnpNamespaces.svc + "stateVariable")) { command.StateVariables.Add(FromXml(container)); } } return command; }
private async Task GetRenderingProtocolAsync() { var avService = Properties.Services.FirstOrDefault(s => s.ServiceType == ServiceRenderingType); if (avService == null) { return; } string url = avService.ScpdUrl; if (!url.Contains("/")) { url = "/dmr/" + url; } if (!url.StartsWith("/")) { url = "/" + url; } var httpClient = new SsdpHttpClient(_httpClient, _config); var document = await httpClient.GetDataAsync(Properties.BaseUrl + url); RendererCommands = TransportCommands.Create(document); }