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; }
public Message Parse(string rawMessage) { Message message = new Message(); using (var reader = new StringReader(rawMessage)) { var line = reader.ReadLine(); var lineIdx = 0; while (line != null) { if (lineIdx == 0) { // request line %METHOD% %URI% HTTP/1.1\r\n message.MessageLine = line; } else { // headers %KEY%:%VALUE% var header = ParseHeader(line); if (header.Key != string.Empty) { message.Headers.Add(header.Key.ToUpper(), header.Value); } } lineIdx++; line = reader.ReadLine(); } } return message; }