HttpBase.cs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. using System;
  2. using System.Text;
  3. using MediaBrowser.Model.Services;
  4. namespace SocketHttpListener
  5. {
  6. internal abstract class HttpBase
  7. {
  8. #region Private Fields
  9. private QueryParamCollection _headers;
  10. private Version _version;
  11. #endregion
  12. #region Protected Fields
  13. protected const string CrLf = "\r\n";
  14. #endregion
  15. #region Protected Constructors
  16. protected HttpBase(Version version, QueryParamCollection headers)
  17. {
  18. _version = version;
  19. _headers = headers;
  20. }
  21. #endregion
  22. #region Public Properties
  23. public QueryParamCollection Headers => _headers;
  24. public Version ProtocolVersion => _version;
  25. #endregion
  26. #region Private Methods
  27. private static Encoding getEncoding(string contentType)
  28. {
  29. if (contentType == null || contentType.Length == 0)
  30. return Encoding.UTF8;
  31. var i = contentType.IndexOf("charset=", StringComparison.Ordinal);
  32. if (i == -1)
  33. return Encoding.UTF8;
  34. var charset = contentType.Substring(i + 8);
  35. i = charset.IndexOf(';');
  36. if (i != -1)
  37. charset = charset.Substring(0, i).TrimEnd();
  38. return Encoding.GetEncoding(charset.Trim('"'));
  39. }
  40. #endregion
  41. #region Public Methods
  42. public byte[] ToByteArray()
  43. {
  44. return Encoding.UTF8.GetBytes(ToString());
  45. }
  46. #endregion
  47. }
  48. }