/// <summary> /// Get Raumfeld DeviceDescription and create new MediaServer /// </summary> /// <returns></returns> //private async Task<MediaServer> loadMediaServerAsync() //{ // //if ((raumfeldDevices?.Devices?.Count() ?? 0) == 0 || server == null) { return null; } // string uuid = ((Guid)server.Properties["System.Devices.ContainerId"]).ToString().ToLower(); // try // { // string serverDescription = raumfeldDevices.Devices.Where(server => server.Udn.Replace("uuid:", "").ToLower() == uuid).Select(server => server.Location).FirstOrDefault(); // if (!string.IsNullOrEmpty(serverDescription)) // { // Uri serverUri = new Uri(serverDescription); // var httpFilter = new Windows.Web.Http.Filters.HttpBaseProtocolFilter(); // httpFilter.CacheControl.ReadBehavior = Windows.Web.Http.Filters.HttpCacheReadBehavior.NoCache; // using (HttpClient client = new HttpClient()) // { // using (HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, serverUri)) // { // request.Headers.Add("User-Agent", "RaumfeldControl/0.0 RaumfeldProtocol/1"); /* RaumfeldControl/3.6 RaumfeldProtocol/399 Build => https://github.com/masmu/pulseaudio-dlna/issues/227 */ // request.Headers.Add("Accept-Language", "en"); // request.Headers.Add("ContentType", "text/xml; charset=\"utf - 8\""); // using (HttpResponseMessage response = await client.SendRequestAsync(request)) // { // if (response.StatusCode == Windows.Web.Http.HttpStatusCode.Ok) // { // string xmlString = await response.Content.ReadAsStringAsync(); // XmlDocument xmlDocument = new XmlDocument(); // xmlDocument.LoadXml(xmlString); // if (xmlDocument != null) // { // DeviceDescription deviceDescription = xmlDocument.GetXml().Deserialize<DeviceDescription>(); // MediaServer mediaServer = new MediaServer(deviceDescription, serverUri.Host, serverUri.Port) // { // DeviceType = MediaDeviceType.MediaServer // }; // await mediaServer.LoadServicesAsync(); // return mediaServer; // } // } // } // } // } // } // } // catch (Exception exception) // { // await UIService.ShowDialogAsync(string.Format("{0} {1}: {2}", UIService.GetResource("Error"), exception.HResult, exception.Message), "LoadMediaServer"); // Logger.GetLogger().SaveMessage(exception, "LoadMediaServerAsync"); // } // return null; //} /// <summary> /// Get Raumfeld DeviceDescription and create new MediaRenderer /// </summary> /// <returns></returns> //private async Task<MediaRenderer> loadMediaRendererAsync(string rendererDescription, MediaDeviceType mediaDeviceType) //{ // //if ((raumfeldDevices?.Devices?.Count() ?? 0) == 0 || server == null) { return null; } // try // { // if (!string.IsNullOrEmpty(rendererDescription)) // { // Uri serverUri = new Uri(rendererDescription); // var httpFilter = new Windows.Web.Http.Filters.HttpBaseProtocolFilter(); // httpFilter.CacheControl.ReadBehavior = Windows.Web.Http.Filters.HttpCacheReadBehavior.NoCache; // using (HttpClient client = new HttpClient(httpFilter)) // { // using (HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, serverUri)) // { // request.Headers.Add("User-Agent", "RaumfeldControl/0.0 RaumfeldProtocol/1"); /* RaumfeldControl/3.6 RaumfeldProtocol/399 Build => https://github.com/masmu/pulseaudio-dlna/issues/227 */ // request.Headers.Add("Accept-Language", "en"); // request.Headers.Add("ContentType", "text/xml; charset=\"utf - 8\""); // using (HttpResponseMessage response = await client.SendRequestAsync(request)) // { // if (response.StatusCode == Windows.Web.Http.HttpStatusCode.Ok) // { // string xmlString = await response.Content.ReadAsStringAsync(); // XmlDocument xmlDocument = new XmlDocument(); // xmlDocument.LoadXml(xmlString); // if (xmlDocument != null) // { // DeviceDescription deviceDescription = xmlDocument.GetXml().Deserialize<DeviceDescription>(); // MediaRenderer mediaRenderer = new MediaRenderer(deviceDescription, serverUri.Host, serverUri.Port); // await mediaRenderer.LoadServicesAsync(); // mediaRenderer.DeviceType = mediaDeviceType; // return mediaRenderer; // } // } // } // } // } // } // } // catch (Exception exception) // { // await UIService.ShowDialogAsync(string.Format("{0} {1}: {2}", UIService.GetResource("Error"), exception.HResult, exception.Message), "LoadMediaRenderer"); // Logger.GetLogger().SaveMessage(exception, "LoadMediaRendererAsync"); // } // return null; //} /// <summary> /// Get Raumfeld DeviceDescription and create new MediaRenderer /// </summary> /// <returns></returns> private async Task <MediaDevice> loadMediaDeviceAsync(string rendererDescription, MediaDeviceType mediaDeviceType) { try { if (!string.IsNullOrEmpty(rendererDescription)) { Uri serverUri = new Uri(rendererDescription); var httpFilter = new Windows.Web.Http.Filters.HttpBaseProtocolFilter(); httpFilter.CacheControl.ReadBehavior = Windows.Web.Http.Filters.HttpCacheReadBehavior.NoCache; using (HttpClient client = new HttpClient(httpFilter)) { using (HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, serverUri)) { request.Headers.Add("User-Agent", "RaumfeldControl/0.0 RaumfeldProtocol/1"); /* RaumfeldControl/3.6 RaumfeldProtocol/399 Build => https://github.com/masmu/pulseaudio-dlna/issues/227 */ request.Headers.Add("Accept-Language", "en"); request.Headers.Add("ContentType", "text/xml; charset=\"utf - 8\""); using (HttpResponseMessage response = await client.SendRequestAsync(request)) { if (response.StatusCode == Windows.Web.Http.HttpStatusCode.Ok) { string xmlString = await response.Content.ReadAsStringAsync(); XmlDocument xmlDocument = new XmlDocument(); xmlDocument.LoadXml(xmlString); if (xmlDocument != null) { DeviceDescription deviceDescription = xmlDocument.GetXml().Deserialize <DeviceDescription>(); if (mediaDeviceType == MediaDeviceType.MediaServer) { MediaServer mediaServer = new MediaServer(deviceDescription, serverUri.Host, serverUri.Port) { DeviceType = mediaDeviceType }; await mediaServer.LoadServicesAsync(); return(mediaServer); } else { MediaRenderer mediaRenderer = new MediaRenderer(deviceDescription, serverUri.Host, serverUri.Port) { DeviceType = mediaDeviceType }; await mediaRenderer.LoadServicesAsync(); mediaRenderer.DeviceType = mediaDeviceType; return(mediaRenderer); } } } } } } } } catch (Exception exception) { await UIService.ShowDialogAsync(string.Format("{0} {1}: {2}", UIService.GetResource("Error"), exception.HResult, exception.Message), "loadMediaDeviceAsync"); Logger.GetLogger().SaveMessage(exception, "loadMediaDeviceAsync"); } return(null); }