Пример #1
0
        public void Should_limit_the_number_of_boundaries()
        {
            // Given
            var stream = BuildInputStream(null, StaticConfiguration.RequestQueryFormMultipartLimit + 10);
            var multipart = new HttpMultipart(stream, Boundary);

            // When
            var boundaries = multipart.GetBoundaries();

            // Then
            boundaries.Count().ShouldEqual(StaticConfiguration.RequestQueryFormMultipartLimit);
        }
Пример #2
0
        public void Should_locate_boundary_when_it_is_not_at_the_beginning_of_stream()
        {
            // Given
            var stream = BuildInputStream("some padding in the stream", 1);
            var multipart = new HttpMultipart(stream, Boundary);

            // When
            var boundaries = multipart.GetBoundaries();

            // Then
            boundaries.Count().ShouldEqual(1);
        }
Пример #3
0
        public void Should_locate_all_boundaries()
        {
            // Given
            var stream = BuildInputStream(null, 10);
            var multipart = new HttpMultipart(stream, Boundary);

            // When
            var boundaries = multipart.GetBoundaries();

            // Then
            boundaries.Count().ShouldEqual(10);
        }
Пример #4
0
        private void ParseFormData()
        {
            if (string.IsNullOrEmpty(this.Headers.ContentType))
            {
                return;
            }

            var contentType = this.Headers["content-type"].First();
            var mimeType    = contentType.Split(';').First();

            if (mimeType.Equals("application/x-www-form-urlencoded", StringComparison.OrdinalIgnoreCase))
            {
                var reader = new StreamReader(this.Body);
                this.form          = reader.ReadToEnd().AsQueryDictionary();
                this.Body.Position = 0;
            }

            if (!mimeType.Equals("multipart/form-data", StringComparison.OrdinalIgnoreCase))
            {
                return;
            }

            var boundary  = Regex.Match(contentType, @"boundary=""?(?<token>[^\n\;\"" ]*)").Groups["token"].Value;
            var multipart = new HttpMultipart(this.Body, boundary);

            var formValues =
                new NameValueCollection(StaticConfiguration.CaseSensitive ? StringComparer.InvariantCulture : StringComparer.InvariantCultureIgnoreCase);

            foreach (var httpMultipartBoundary in multipart.GetBoundaries())
            {
                if (string.IsNullOrEmpty(httpMultipartBoundary.Filename))
                {
                    var reader =
                        new StreamReader(httpMultipartBoundary.Value);
                    formValues.Add(httpMultipartBoundary.Name, reader.ReadToEnd());
                }
                else
                {
                    this.files.Add(new HttpFile(httpMultipartBoundary));
                }
            }

            foreach (var key in formValues.AllKeys.Where(key => key != null))
            {
                this.form[key] = formValues[key];
            }

            this.Body.Position = 0;
        }
Пример #5
0
        private void ParseFormData()
        {
            if (string.IsNullOrEmpty(this.Headers.ContentType))
            {
                return;
            }

            var contentType = this.Headers["content-type"].First();
            var mimeType    = contentType.Split(';').First();

            if (mimeType.Equals("application/x-www-form-urlencoded", StringComparison.OrdinalIgnoreCase))
            {
                var reader = new StreamReader(this.Body);
                this.form          = reader.ReadToEnd().AsQueryDictionary();
                this.Body.Position = 0;
            }

            if (!mimeType.Equals("multipart/form-data", StringComparison.OrdinalIgnoreCase))
            {
                return;
            }

            var boundary  = Regex.Match(contentType, @"boundary=(?<token>[^\n\; ]*)").Groups["token"].Value;
            var multipart = new HttpMultipart(this.Body, boundary);

            foreach (var httpMultipartBoundary in multipart.GetBoundaries())
            {
                if (string.IsNullOrEmpty(httpMultipartBoundary.Filename))
                {
                    var reader = new StreamReader(httpMultipartBoundary.Value);
                    this.form[httpMultipartBoundary.Name] = reader.ReadToEnd();
                }
                else
                {
                    this.files.Add(new HttpFile(
                                       httpMultipartBoundary.ContentType,
                                       httpMultipartBoundary.Filename,
                                       httpMultipartBoundary.Value,
                                       httpMultipartBoundary.Name                                     //include the form field that posted this file
                                       ));
                }
            }

            this.Body.Position = 0;
        }
Пример #6
0
        private void ParseFormData()
        {
            if (string.IsNullOrEmpty(this.Headers.ContentType))
            {
                return;
            }

            var contentType = this.Headers["content-type"].First();
            var mimeType = contentType.Split(';').First();
            if (mimeType.Equals("application/x-www-form-urlencoded", StringComparison.OrdinalIgnoreCase))
            {
                var reader = new StreamReader(this.Body);
                this.form = reader.ReadToEnd().AsQueryDictionary();
                this.Body.Position = 0;
            }

            if (!mimeType.Equals("multipart/form-data", StringComparison.OrdinalIgnoreCase))
            {
                return;
            }

            var boundary = Regex.Match(contentType, @"boundary=""?(?<token>[^\n\;\"" ]*)").Groups["token"].Value;
            var multipart = new HttpMultipart(this.Body, boundary);

            var formValues =
                new NameValueCollection(StaticConfiguration.CaseSensitive ? StringComparer.InvariantCulture : StringComparer.InvariantCultureIgnoreCase);

            foreach (var httpMultipartBoundary in multipart.GetBoundaries())
            {
                if (string.IsNullOrEmpty(httpMultipartBoundary.Filename))
                {
                    var reader =
                        new StreamReader(httpMultipartBoundary.Value);
                    formValues.Add(httpMultipartBoundary.Name, reader.ReadToEnd());

                }
                else
                {
                    this.files.Add(new HttpFile(httpMultipartBoundary));
                }
            }

            foreach (var key in formValues.AllKeys.Where(key => key != null))
            {
                this.form[key] = formValues[key];
            }

            this.Body.Position = 0;
        }
Пример #7
0
        private void ParseFormData()
        {
            if (string.IsNullOrEmpty(this.Headers.ContentType))
            {
                return;
            }

            var contentType = this.Headers["content-type"].First();
            var mimeType = contentType.Split(';').First();
            if (mimeType.Equals("application/x-www-form-urlencoded", StringComparison.OrdinalIgnoreCase))
            {
                var reader = new StreamReader(this.Body);
                this.form = reader.ReadToEnd().AsQueryDictionary();
                this.Body.Position = 0;
            }

            if (!mimeType.Equals("multipart/form-data", StringComparison.OrdinalIgnoreCase))
            {
                return;
            }

            var boundary = Regex.Match(contentType, @"boundary=(?<token>[^\n\; ]*)").Groups["token"].Value;
            var multipart = new HttpMultipart(this.Body, boundary);

            foreach (var httpMultipartBoundary in multipart.GetBoundaries())
            {
                if (string.IsNullOrEmpty(httpMultipartBoundary.Filename))
                {
                    var reader = new StreamReader(httpMultipartBoundary.Value);
                    this.form[httpMultipartBoundary.Name] = reader.ReadToEnd();
                }
                else
                {
                    this.files.Add(new HttpFile(
                                       httpMultipartBoundary.ContentType,
                                       httpMultipartBoundary.Filename,
                                       httpMultipartBoundary.Value,
                                       httpMultipartBoundary.Name //include the form field that posted this file
                                       ));
                }
            }

            this.Body.Position = 0;
        }