123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- using System;
- using System.Text;
- using MediaBrowser.Model.Services;
- namespace SocketHttpListener
- {
- internal abstract class HttpBase
- {
- #region Private Fields
- private QueryParamCollection _headers;
- private Version _version;
- #endregion
- #region Internal Fields
- internal byte[] EntityBodyData;
- #endregion
- #region Protected Fields
- protected const string CrLf = "\r\n";
- #endregion
- #region Protected Constructors
- protected HttpBase(Version version, QueryParamCollection headers)
- {
- _version = version;
- _headers = headers;
- }
- #endregion
- #region Public Properties
- public string EntityBody
- {
- get
- {
- var data = EntityBodyData;
- return data != null && data.Length > 0
- ? getEncoding(_headers["Content-Type"]).GetString(data, 0, data.Length)
- : string.Empty;
- }
- }
- public QueryParamCollection Headers
- {
- get
- {
- return _headers;
- }
- }
- public Version ProtocolVersion
- {
- get
- {
- return _version;
- }
- }
- #endregion
- #region Private Methods
- private static Encoding getEncoding(string contentType)
- {
- if (contentType == null || contentType.Length == 0)
- return Encoding.UTF8;
- var i = contentType.IndexOf("charset=", StringComparison.Ordinal);
- if (i == -1)
- return Encoding.UTF8;
- var charset = contentType.Substring(i + 8);
- i = charset.IndexOf(';');
- if (i != -1)
- charset = charset.Substring(0, i).TrimEnd();
- return Encoding.GetEncoding(charset.Trim('"'));
- }
- #endregion
- #region Public Methods
- public byte[] ToByteArray()
- {
- return Encoding.UTF8.GetBytes(ToString());
- }
- #endregion
- }
- }
|