/// <summary> /// Adds the received request to the list of received requests /// </summary> /// <param name="httpListenerContext"></param> protected void AddRequest(HttpListenerContext httpListenerContext) { RequestInstance newRequest = new RequestInstance(); newRequest.TimeStamp = DateTime.Now; newRequest.Headers = GetDictionaryFromCollection(httpListenerContext.Request.Headers); newRequest.Method = httpListenerContext.Request.HttpMethod; // calling HttpUtility.ParseQueryString due to a known defect in context.Request.QueryString newRequest.GetQueryString = GetDictionaryFromCollection(HttpUtility.ParseQueryString(httpListenerContext.Request.Url.Query)); newRequest.PostQueryString = new Dictionary <string, string>(); newRequest.Files = new List <UploadedFile>(); newRequest = ProcessPost(newRequest, httpListenerContext); newRequest.Uri = httpListenerContext.Request.Url.AbsoluteUri.Substring(EndpointAddress.Length); if (newRequest.Uri.Contains("?")) { newRequest.Uri = newRequest.Uri.Substring(0, newRequest.Uri.IndexOf('?')); } RequestsReceived.Add(newRequest); }
/// <summary> /// Converts post contents of received HttpListenerRequest to RequestInstance /// (Includes PostQueryString and uploaded files) /// </summary> /// <returns>RequestInstance containing post contents of HttpListenerRequest</returns> /// <param name="newRequest">The RequestInstance to put post contents into</param> /// <param name="context">the HttpListenerContext on listener</param> protected override RequestInstance ProcessPost(RequestInstance newRequest, HttpListenerContext context) { if (context.Request.ContentType != null && context.Request.ContentType.ToLower().Contains("multipart")) { newRequest.Files = UploadedFileParser.ParseUploadedFiles(context.Request.InputStream); } return(newRequest); }
/// <summary> /// Converts post contents of received HttpListenerRequest to RequestInstance /// (Includes PostQueryString and uploaded files) /// </summary> /// <returns>RequestInstance containing post contents of HttpListenerRequest</returns> /// <param name="newRequest">The RequestInstance to put post contents into</param> /// <param name="context">the HttpListenerContext on listener</param> protected override RequestInstance ProcessPost(RequestInstance newRequest, HttpListenerContext context) { string rawPostQueryString = new StreamReader(context.Request.InputStream).ReadToEnd(); newRequest.RawPostQueryString = rawPostQueryString; if (rawPostQueryString.Length > 0) { newRequest.PostQueryString = GetDictionaryFromCollection(HttpUtility.ParseQueryString(rawPostQueryString)); } return(newRequest); }
/// <summary> /// Converts post contents of received HttpListenerRequest to RequestInstance /// (Includes PostQueryString and uploaded files) /// </summary> /// <returns>RequestInstance containing post contents of HttpListenerRequest</returns> /// <param name="newRequest">The RequestInstance to put post contents into</param> /// <param name="context">the HttpListenerContext on listener</param> protected virtual RequestInstance ProcessPost(RequestInstance newRequest, HttpListenerContext context) { throw new NotImplementedException($"Not implemented in {GetType().Name}."); }