public EventHttpRequest(EventHttpListener listener, IntPtr handle) { _listener = listener; _handle = new EvHttpRequest(handle); Method = Commands[Event.EvHttpRequestGetCommand(_handle)]; Uri = Marshal.PtrToStringAnsi(Event.EvHttpRequestGetUri(_handle)); var pHost = Event.EvHttpRequestGetHost(_handle); if (pHost != IntPtr.Zero) Host = Marshal.PtrToStringAnsi(pHost); Headers = EvKeyValuePair.ExtractDictinary(Event.EvHttpRequestGetInputHeaders(_handle)); IEnumerable<string> host; if (Headers.TryGetValue("Host", out host)) Host = host.First().Split(':')[0]; var evBuffer = new EvBuffer(Event.EvHttpRequestGetInputBuffer(_handle), false); if (!evBuffer.IsInvalid) { var len = Event.EvBufferGetLength(evBuffer).ToInt32(); RequestBody = new byte[len]; Event.EvBufferRemove(evBuffer, RequestBody, new IntPtr(len)); } var conn = Event.EvHttpRequestGetConnection(_handle); IntPtr pHostString = IntPtr.Zero; ushort port = 0; Event.EvHttpConnectionGetPeer(conn, ref pHostString, ref port); UserHostAddress = Marshal.PtrToStringAnsi(pHostString); _listener.IncreaseRequestCounter(); }
public EventHttpRequest(EventHttpListener listener, IntPtr handle) { _listener = listener; _handle = new EvHttpRequest(handle); Method = Commands[Event.EvHttpRequestGetCommand(_handle)]; Uri = Marshal.PtrToStringAnsi(Event.EvHttpRequestGetUri(_handle)); var pHost = Event.EvHttpRequestGetHost(_handle); if (pHost != IntPtr.Zero) { Host = Marshal.PtrToStringAnsi(pHost); } Headers = EvKeyValuePair.ExtractDictinary(Event.EvHttpRequestGetInputHeaders(_handle)); IEnumerable <string> host; if (Headers.TryGetValue("Host", out host)) { Host = host.First().Split(':')[0]; } var evBuffer = new EvBuffer(Event.EvHttpRequestGetInputBuffer(_handle), false); if (!evBuffer.IsInvalid) { var len = Event.EvBufferGetLength(evBuffer).ToInt32(); RequestBody = new byte[len]; Event.EvBufferRemove(evBuffer, RequestBody, new IntPtr(len)); } var conn = Event.EvHttpRequestGetConnection(_handle); IntPtr pHostString = IntPtr.Zero; ushort port = 0; Event.EvHttpConnectionGetPeer(conn, ref pHostString, ref port); UserHostAddress = Marshal.PtrToStringAnsi(pHostString); _listener.IncreaseRequestCounter(); }