private static void HandleLocation(DeviceInformation device) { using (WebClient wc = new WebClient()) { try { string xmlData = wc.DownloadString(device.Location); XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(xmlData); if (xmlDoc.DocumentElement != null) { XmlNamespaceManager nsmgr = new XmlNamespaceManager(xmlDoc.NameTable); nsmgr.AddNamespace("dev", xmlDoc.DocumentElement.NamespaceURI); var name = xmlDoc.SelectSingleNode("/dev:root/dev:device/dev:friendlyName", nsmgr); var presentationUrl = xmlDoc.SelectSingleNode("/dev:root/dev:device/dev:presentationURL", nsmgr); var modelName = xmlDoc.SelectSingleNode("/dev:root/dev:device/dev:modelName", nsmgr); var modelDesc = xmlDoc.SelectSingleNode("/dev:root/dev:device/dev:modelDescription", nsmgr); device.FriendlyName = name?.InnerText; device.PresentationUrl = presentationUrl?.InnerText; device.ModelName = modelName?.InnerText; device.ModelDescription = modelDesc?.InnerText; } } catch (Exception e) { Console.WriteLine(e.Message); } } }
public DeviceInformation Collect(Message message) { var device = new DeviceInformation(); if (message.Headers.ContainsKey("USN")) { device.UniqueId = message.Headers["USN"]; } if (message.Headers.ContainsKey("LOCATION")) { device.Location = message.Headers["LOCATION"]; Regex regex = new Regex(@"((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"); if (regex.IsMatch(device.Location)) { var m = regex.Match(device.Location); device.HostAddress = m.Groups[0].Value; } HandleLocation(device); } if (message.Headers.ContainsKey("SERVER")) { device.PlatformName = message.Headers["SERVER"]; } return device; }
private static void LogDevice(DeviceInformation d) { Log.InfoFormat("Discovered a new device:"); Log.InfoFormat("FriendlyName : {0}", d.FriendlyName); Log.InfoFormat("ModelName : {0}", d.ModelName); Log.InfoFormat("ModelDesc : {0}", d.ModelDescription); Log.InfoFormat("HostAddress : {0}", d.HostAddress); Log.InfoFormat("Location : {0}", d.Location); Log.InfoFormat("UniqueId : {0}", d.UniqueId); Log.InfoFormat("Platform : {0}", d.PlatformName); }
public static void AddOrUpdate(DeviceInformation deviceInformation) { deviceInformation.LastSeen = DateTime.Now; if (Devices.ContainsKey(deviceInformation.UniqueId)) { Devices[deviceInformation.UniqueId] = deviceInformation; return; } Devices.Add(deviceInformation.UniqueId, deviceInformation); LogDevice(deviceInformation); }
public ResponseFactory(DeviceInformation deviceInformation, IMessageParser messageParser) { _deviceInformation = deviceInformation; _messageParser = messageParser; }