SsdpMessageBuilder.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. namespace MediaBrowser.Dlna.Ssdp
  5. {
  6. public class SsdpMessageBuilder
  7. {
  8. public string BuildMessage(string header, Dictionary<string, string> values)
  9. {
  10. var builder = new StringBuilder();
  11. const string argFormat = "{0}: {1}\r\n";
  12. builder.AppendFormat("{0}\r\n", header);
  13. foreach (var pair in values)
  14. {
  15. builder.AppendFormat(argFormat, pair.Key, pair.Value);
  16. }
  17. builder.Append("\r\n");
  18. return builder.ToString();
  19. }
  20. public string BuildDiscoveryMessage(string deviceSearchType, string mx)
  21. {
  22. const string header = "M-SEARCH * HTTP/1.1";
  23. var values = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
  24. values["HOST"] = "239.255.255.250:1900";
  25. values["USER-AGENT"] = "UPnP/1.0 DLNADOC/1.50 Platinum/1.0.4.2";
  26. values["ST"] = deviceSearchType;
  27. values["MAN"] = "\"ssdp:discover\"";
  28. values["MX"] = mx;
  29. return BuildMessage(header, values);
  30. }
  31. public string BuildRendererDiscoveryMessage()
  32. {
  33. return BuildDiscoveryMessage("urn:schemas-upnp-org:device:MediaRenderer:1", "3");
  34. }
  35. }
  36. }