using System; using System.Collections.Generic; using System.Text; namespace MediaBrowser.Dlna.Ssdp { public class SsdpMessageBuilder { public string BuildMessage(string header, Dictionary values) { var builder = new StringBuilder(); const string argFormat = "{0}: {1}\r\n"; builder.AppendFormat("{0}\r\n", header); foreach (var pair in values) { builder.AppendFormat(argFormat, pair.Key, pair.Value); } builder.Append("\r\n"); return builder.ToString(); } public string BuildDiscoveryMessage(string deviceSearchType, string mx) { const string header = "M-SEARCH * HTTP/1.1"; var values = new Dictionary(StringComparer.OrdinalIgnoreCase); values["HOST"] = "239.255.255.250:1900"; values["USER-AGENT"] = "UPnP/1.0 DLNADOC/1.50 Platinum/1.0.4.2"; values["ST"] = "ssdp:all"; values["MAN"] = "ssdp:discover"; values["MX"] = "10"; return BuildMessage(header, values); } public string BuildRendererDiscoveryMessage() { return BuildDiscoveryMessage("urn:schemas-upnp-org:device:MediaRenderer:1", "3"); } public string BuildMediaServerDiscoveryMessage() { return BuildDiscoveryMessage("urn:schemas-upnp-org:device:MediaRenderer:1", "3"); } } }