Ejemplo n.º 1
0
        public HttpRequest(byte[] headerBytes, IConfigurationManager configurationManager, ILogger logger)
        {
            _configurationManager = configurationManager;
            this.logger           = logger;

            string data = Encoding.ASCII.GetString(headerBytes);

            // construct header from http data
            string[] datas = data.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);

            // First line
            string[] parts = datas[0].Split(' ');

            Verb        = (HttpVerb)Enum.Parse(typeof(HttpVerb), parts[0], true);
            Path        = parts[1];
            HttpVersion = parts[2];

            // Subsequent lines
            for (int i = 1; i < datas.Length; i++)
            {
                string key   = datas[i].Substring(0, datas[i].IndexOf(':'));
                string value = datas[i].Substring(datas[i].IndexOf(' ') + 1);
                RequestHeader.Add(key, value);
            }

            // Uri
            Uri = new Uri($"http://{RequestHeader["Host"]}{Path}");
        }
Ejemplo n.º 2
0
        private static Request BuildRequest(HttpContext context)
        {
            var stream = context.Request.Body;

            using (var streamReader = new StreamReader(stream))
            {
                var request = new Request()
                {
                    Content       = streamReader.ReadToEnd(),
                    RequestHeader = BuildRequestHeader(),
                };

                return(request);
            }

            RequestHeader BuildRequestHeader()
            {
                var requestHeader = new RequestHeader();

                foreach (KeyValuePair <string, StringValues> keyValuePair in context.Request.Headers)
                {
                    requestHeader.Add(keyValuePair.Key, keyValuePair.Value);
                }

                return(requestHeader);
            }
        }
Ejemplo n.º 3
0
        public void Contains_WhenHeadersDoesNotContainAMatchingKeyValuePair_ReturnsFalse()
        {
            RequestHeader header = new RequestHeader();

            header.Add("test",
                       new[]
            {
                "test_value"
            });


            header.Contains("I_do_not_exist_as_a_key")
            .Should().BeFalse();
        }
Ejemplo n.º 4
0
        public void Contains_WhenHeadersContainAMatchingKeyValuePair_ReturnsTrue()
        {
            RequestHeader header = new RequestHeader();

            header.Add("test",
                       new[]
            {
                "test_value"
            });


            header.Contains("test")
            .Should().BeTrue();
        }
Ejemplo n.º 5
0
        public void Add_CanAddRequestHeaderKeyValuePair()
        {
            RequestHeader header = new RequestHeader();

            header.Add("test",
                       new[]
            {
                "test_value"
            });

            header.HeadersInternal.Keys.Should().Contain("test");
            header.HeadersInternal.Values.Should().BeEquivalentTo(new[]
            {
                new[] { "test_value" }
            });
        }
Ejemplo n.º 6
0
        public void ContainsKeyAndValues_WhenHeadersContainsKeyButNotMatchingValues_ReturnsFalse()
        {
            RequestHeader header = new RequestHeader();

            header.Add("test",
                       new[]
            {
                "test_value"
            });


            header.ContainsKeyAndValues("test",
                                        new[]
            {
                "this_value_doesnt_exist"
            })
            .Should().BeFalse();
        }
Ejemplo n.º 7
0
        public void ContainsKeyAndValues_WhenHeadersContainsKeyAndValues_ReturnsTrue()
        {
            RequestHeader header = new RequestHeader();

            header.Add("test",
                       new[]
            {
                "test_value"
            });


            header.ContainsKeyAndValues("test",
                                        new[]
            {
                "test_value"
            })
            .Should().BeTrue();
        }
Ejemplo n.º 8
0
        public void ContainsKeyAndValues_WhenHeadersDoesNotContainKey_ReturnsFalse()
        {
            RequestHeader header = new RequestHeader();

            header.Add("this_key_does_not_exist",
                       new[]
            {
                "test_value"
            });


            header.ContainsKeyAndValues("test",
                                        new[]
            {
                "test_value"
            })
            .Should().BeFalse();
        }