using System; using System.Collections.Specialized; using System.IO; using System.Net; using System.Text; namespace EmbedIO.Net.Internal { /// /// Represents a wrapper for HttpListenerContext.Request. /// /// public class SystemHttpRequest : IHttpRequest { private readonly System.Net.HttpListenerRequest _request; /// /// Initializes a new instance of the class. /// /// The context. public SystemHttpRequest(System.Net.HttpListenerContext context) { _request = context.Request; _ = Enum.TryParse(_request.HttpMethod.Trim(), true, out var verb); HttpVerb = verb; Cookies = new SystemCookieCollection(_request.Cookies); LocalEndPoint = _request.LocalEndPoint!; RemoteEndPoint = _request.RemoteEndPoint!; } /// public NameValueCollection Headers => _request.Headers; /// public Version ProtocolVersion => _request.ProtocolVersion; /// public bool KeepAlive => _request.KeepAlive; /// public ICookieCollection Cookies { get; } /// public string RawUrl => _request.RawUrl; /// public NameValueCollection QueryString => _request.QueryString; /// public string HttpMethod => _request.HttpMethod; /// public HttpVerbs HttpVerb { get; } /// public Uri Url => _request.Url; /// public bool HasEntityBody => _request.HasEntityBody; /// public Stream InputStream => _request.InputStream; /// public Encoding ContentEncoding { get { if (!_request.HasEntityBody || _request.ContentType == null) { return WebServer.DefaultEncoding; } var charSet = HeaderUtility.GetCharset(ContentType); if (string.IsNullOrEmpty(charSet)) { return WebServer.DefaultEncoding; } try { return Encoding.GetEncoding(charSet); } catch (ArgumentException) { return WebServer.DefaultEncoding; } } } /// public IPEndPoint RemoteEndPoint { get; } /// public bool IsSecureConnection => _request.IsSecureConnection; /// public bool IsLocal => _request.IsLocal; /// public string UserAgent => _request.UserAgent; /// public bool IsWebSocketRequest => _request.IsWebSocketRequest; /// public IPEndPoint LocalEndPoint { get; } /// public string ContentType => _request.ContentType; /// public long ContentLength64 => _request.ContentLength64; /// public bool IsAuthenticated => _request.IsAuthenticated; /// public Uri? UrlReferrer => _request.UrlReferrer; } }