Example #1
0
        public void GetOutputStream_ThrowsOnInvalidStreamProvider(MultipartStreamProvider streamProvider)
        {
            HttpContent  parent   = new StringContent("hello");
            MimeBodyPart bodypart = new MimeBodyPart(streamProvider, 1024);

            Assert.Throws <InvalidOperationException>(() => bodypart.GetOutputStream(parent));
        }
Example #2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="MimeBodyPart"/> class.
 /// </summary>
 /// <param name="streamProvider">The stream provider.</param>
 /// <param name="maxBodyPartHeaderSize">The max length of the MIME header within each MIME body part.</param>
 public MimeBodyPart(MultipartStreamProvider streamProvider, int maxBodyPartHeaderSize)
 {
     Contract.Assert(streamProvider != null);
     _streamProvider = streamProvider;
     Segments        = new List <ArraySegment <byte> >(2);
     _headers        = FormattingUtilities.CreateEmptyContentHeaders();
     HeaderParser    = new InternetMessageFormatHeaderParser(_headers, maxBodyPartHeaderSize);
 }
Example #3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="MimeBodyPart"/> class.
 /// </summary>
 /// <param name="streamProvider">The stream provider.</param>
 /// <param name="maxBodyPartHeaderSize">The max length of the MIME header within each MIME body part.</param>
 public MimeBodyPart(MultipartStreamProvider streamProvider, int maxBodyPartHeaderSize)
 {
     Contract.Assert(streamProvider != null);
     _streamProvider = streamProvider;
     Segments = new List<ArraySegment<byte>>(2);
     _headers = FormattingUtilities.CreateEmptyContentHeaders();
     HeaderParser = new InternetMessageFormatHeaderParser(_headers, maxBodyPartHeaderSize);
 }
Example #4
0
        public void GetOutputStream_ThrowsOnInvalidStreamProvider(MultipartStreamProvider streamProvider)
        {
            // Arrange
            HttpContent parent = new StringContent("hello");
            MimeBodyPart bodypart = new MimeBodyPart(streamProvider, 1024, parent);
            bodypart.Segments.Add(new ArraySegment<byte>(new byte[] { 1 }));

            // Act and Assert
            Assert.Throws<InvalidOperationException>(() => bodypart.WriteSegment(bodypart.Segments[0]).Wait());
        }
        public async Task GetOutputStream_ThrowsOnInvalidStreamProvider(MultipartStreamProvider streamProvider)
        {
            // Arrange
            HttpContent  parent   = new StringContent("hello");
            MimeBodyPart bodypart = new MimeBodyPart(streamProvider, 1024, parent);

            bodypart.Segments.Add(new ArraySegment <byte>(new byte[] { 1 }));

            // Act and Assert
            await Assert.ThrowsAsync <InvalidOperationException>(() => bodypart.WriteSegment(bodypart.Segments[0], CancellationToken.None));
        }
Example #6
0
        public void GetOutputStream_ThrowsOnInvalidStreamProvider(MultipartStreamProvider streamProvider)
        {
            // Arrange
            HttpContent  parent   = new StringContent("hello");
            MimeBodyPart bodypart = new MimeBodyPart(streamProvider, 1024, parent);

            bodypart.Segments.Add(new ArraySegment <byte>(new byte[] { 1 }));

            // Act and Assert
            Assert.Throws <InvalidOperationException>(() => bodypart.WriteSegment(bodypart.Segments[0]).Wait());
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="MimeBodyPart"/> class.
 /// </summary>
 /// <param name="streamProvider">The stream provider.</param>
 /// <param name="maxBodyPartHeaderSize">The max length of the MIME header within each MIME body part.</param>
 /// <param name="parentContent">The part's parent content</param>
 public MimeBodyPart(MultipartStreamProvider streamProvider, int maxBodyPartHeaderSize, HttpContent parentContent)
 {
     Contract.Assert(streamProvider != null);
     Contract.Assert(parentContent != null);
     _streamProvider = streamProvider;
     _parentContent  = parentContent;
     Segments        = new List <ArraySegment <byte> >(2);
     _headers        = FormattingUtilities.CreateEmptyContentHeaders();
     HeaderParser    = new InternetMessageFormatHeaderParser(
         _headers,
         maxBodyPartHeaderSize,
         ignoreHeaderValidation: true);
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="MimeBodyPart"/> class.
 /// </summary>
 /// <param name="streamProvider">The stream provider.</param>
 /// <param name="maxBodyPartHeaderSize">The max length of the MIME header within each MIME body part.</param>
 /// <param name="parentContent">The part's parent content</param>
 public MimeBodyPart(MultipartStreamProvider streamProvider, int maxBodyPartHeaderSize, HttpContent parentContent)
 {
     Contract.Assert(streamProvider != null);
     Contract.Assert(parentContent != null);
     _streamProvider = streamProvider;
     _parentContent = parentContent;
     Segments = new List<ArraySegment<byte>>(2);
     _headers = FormattingUtilities.CreateEmptyContentHeaders();
     HeaderParser = new InternetMessageFormatHeaderParser(
         _headers, 
         maxBodyPartHeaderSize, 
         ignoreHeaderValidation: true);
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="MimeMultipartBodyPartParser"/> class.
        /// </summary>
        /// <param name="content">An existing <see cref="HttpContent"/> instance to use for the object's content.</param>
        /// <param name="streamProvider">A stream provider providing output streams for where to write body parts as they are parsed.</param>
        /// <param name="maxMessageSize">The max length of the entire MIME multipart message.</param>
        /// <param name="maxBodyPartHeaderSize">The max length of the MIME header within each MIME body part.</param>
        public MimeMultipartBodyPartParser(
            HttpContent content,
            MultipartStreamProvider streamProvider,
            long maxMessageSize,
            int maxBodyPartHeaderSize)
        {
            Contract.Assert(content != null, "content cannot be null.");
            Contract.Assert(streamProvider != null, "streamProvider cannot be null.");

            string boundary = ValidateArguments(content, maxMessageSize, true);

            this._mimeParser = new MimeMultipartParser(boundary, maxMessageSize);
            this._currentBodyPart = new MimeBodyPart(streamProvider, maxBodyPartHeaderSize, content);
            this._content = content;
            this._maxBodyPartHeaderSize = maxBodyPartHeaderSize;

            this._streamProvider = streamProvider;
        }
        private static async Task WriteFilesAsync(
            string author, 
            string identifier, 
            MultipartStreamProvider provider, 
            Func<string, string, string, Stream, string, Task> writeAsync)
        {
            foreach (var httpContent in provider.Contents)
            {
                var fileName = httpContent.GetFileName();
                var stream = await httpContent.ReadAsStreamAsync();

                await writeAsync(DefaultConnectionStringName, identifier, fileName, stream, author);
            }
        }
 public void GetOutputStream_ThrowsOnInvalidStreamProvider(MultipartStreamProvider streamProvider)
 {
     HttpContent parent = new StringContent("hello");
     MimeBodyPart bodypart = new MimeBodyPart(streamProvider, 1024);
     Assert.Throws<InvalidOperationException>(() => bodypart.GetOutputStream(parent));
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="MimeMultipartBodyPartParser"/> class.
 /// </summary>
 /// <param name="content">An existing <see cref="HttpContent"/> instance to use for the object's content.</param>
 /// <param name="streamProvider">A stream provider providing output streams for where to write body parts as they are parsed.</param>
 public MimeMultipartBodyPartParser(HttpContent content, MultipartStreamProvider streamProvider)
     : this(content, streamProvider, DefaultMaxMessageSize, DefaultMaxBodyPartHeaderSize)
 {
 }