Пример #1
0
        public void Should_Parse_Get_With_QueryString_Ignored()
        {
            var options = new IgnoreHttpParserOptions
            {
                IgnoreRequestBody = true
            };

            var parsed = Parser.ParseRawRequest(FakeRawRequests.GetWithQueryString, options);

            Assert.AreEqual("https://httpbin.org/get?name=ryan", parsed.Url);
            Assert.AreEqual("GET", parsed.Headers["Method"]);
            Assert.AreEqual(null, parsed.RequestBody);
        }
Пример #2
0
        public void Should_Parse_Post_Ignore_RequestBody()
        {
            var options = new IgnoreHttpParserOptions
            {
                IgnoreRequestBody = true
            };

            var parsed = Parser.ParseRawRequest(FakeRawRequests.PostWithRequestBody, options);

            Assert.AreEqual("https://httpbin.org/post", parsed.Url);
            Assert.AreEqual("POST", parsed.Headers["Method"]);
            Assert.AreEqual(1, parsed.Cookies.Count);
            Assert.AreEqual("chocchip", parsed.Cookies["ilikecookies"]);
            Assert.AreEqual(null, parsed.RequestBody);
        }
Пример #3
0
        public static ParsedHttpRequest ParseRawRequest(string raw, IgnoreHttpParserOptions options = null)
        {
            try
            {
                var lines = SplitLines(raw);

                var requestLine    = new RequestLine(lines);
                var requestHeaders = new RequestHeaders(lines);
                requestHeaders.AddHeader("Method", requestLine.Method);
                requestHeaders.AddHeader("HttpVersion", requestLine.HttpVersion);

                var requestCookies = new RequestCookies(lines);
                var requestBody    = new RequestBody(requestLine, lines);

                var parsed = new ParsedHttpRequest(options)
                {
                    Url         = requestLine.Url,
                    Uri         = new Uri(requestLine.Url),
                    Headers     = requestHeaders.Headers,
                    Cookies     = requestCookies.ParsedCookies,
                    RequestBody = requestBody.Body
                };

                parsed.ApplyIgnoreOptions();

                return(parsed);
            }
            catch (CouldNotParseHttpRequestException c)
            {
                Console.WriteLine($"Could not parse the raw request. {c.Message}");
                throw;
            }
            catch (Exception e)
            {
                Console.WriteLine($"Unhandled error parsing the raw request: {raw}\r\nError {e.Message}");
                throw;
            }
        }