Esempio n. 1
0
        public void CanParse_MediaTypesWithParameters(string mediaType)
        {
            // Arrange & Act
            var result = new MediaType(mediaType, 0, mediaType.Length);

            // Assert
            Assert.Equal(new StringSegment("application"), result.Type);
            Assert.Equal(new StringSegment("json"), result.SubType);
            Assert.Equal(new StringSegment("pretty"), result.GetParameter("format"));
            Assert.Equal(new StringSegment("0.8"), result.GetParameter("q"));
            Assert.Equal(new StringSegment("utf-8"), result.GetParameter("charset"));
        }
Esempio n. 2
0
        public void Constructor_CanParseMediaTypesWithParameters(string mediaType)
        {
            // Arrange & Act
            var result = new MediaType(mediaType, 0, mediaType.Length);

            // Assert
            new StringSegment("application").Should().Be(result.Type);
            new StringSegment("json+bson").Should().Be(result.SubType);
            new StringSegment("json").Should().Be(result.SubTypeWithoutSuffix);
            new StringSegment("bson").Should().Be(result.SubTypeSuffix);
            new StringSegment("pretty").Should().Be(result.GetParameter("format"));
            new StringSegment("0.8").Should().Be(result.GetParameter("q"));
            new StringSegment("utf-8").Should().Be(result.GetParameter("charset"));
        }
Esempio n. 3
0
    /// <summary>
    /// Replaces the encoding of the given <paramref name="mediaType"/> with the provided
    /// <paramref name="encoding"/>.
    /// </summary>
    /// <param name="mediaType">The media type whose encoding will be replaced.</param>
    /// <param name="encoding">The encoding that will replace the encoding in the <paramref name="mediaType"/>.
    /// </param>
    /// <returns>A media type with the replaced encoding.</returns>
    public static string ReplaceEncoding(StringSegment mediaType, Encoding encoding)
    {
        var parsedMediaType = new MediaType(mediaType);
        var charset         = parsedMediaType.GetParameter("charset");

        if (charset.HasValue && charset.Equals(encoding.WebName, StringComparison.OrdinalIgnoreCase))
        {
            return(mediaType.Value ?? string.Empty);
        }

        if (!charset.HasValue)
        {
            return(CreateMediaTypeWithEncoding(mediaType, encoding));
        }

        var charsetOffset = charset.Offset - mediaType.Offset;
        var restOffset    = charsetOffset + charset.Length;
        var restLength    = mediaType.Length - restOffset;
        var finalLength   = charsetOffset + encoding.WebName.Length + restLength;

        var builder = new StringBuilder(mediaType.Buffer, mediaType.Offset, charsetOffset, finalLength);

        builder.Append(encoding.WebName);
        builder.Append(mediaType.Buffer, restOffset, restLength);

        return(builder.ToString());
    }
Esempio n. 4
0
        public void WriteMultipartWithIResource()
        {
            string fileToUpload = Path.Combine(Environment.CurrentDirectory, @"Http\Converters\FileToUpload.png");

            IDictionary <string, object> parts = new Dictionary <string, object>();

            parts.Add("name 1", "value 1");
            parts.Add("name 2", "value 2+1");
            HttpEntity entity = new HttpEntity("<root><child/></root>");

            entity.Headers.ContentType = MediaType.TEXT_XML;
            parts.Add("xml", entity);
            parts.Add("logo", new FileResource(fileToUpload));

            MockHttpOutputMessage message = new MockHttpOutputMessage();

            converter.Write(parts, MediaType.MULTIPART_FORM_DATA, message);

            MediaType contentType = message.Headers.ContentType;

            Assert.IsNotNull(contentType, "Invalid content-type");
            Assert.AreEqual("multipart", contentType.Type, "Invalid content-type");
            Assert.AreEqual("form-data", contentType.Subtype, "Invalid content-type");
            string boundary = contentType.GetParameter("boundary");

            Assert.IsNotNull(boundary, "Invalid content-type");

            string result = message.GetBodyAsString(Encoding.UTF8);

            Assert.IsTrue(result.Contains("--" + boundary + "\r\nContent-Disposition: form-data; name=\"name 1\"\r\nContent-Type: text/plain;charset=ISO-8859-1\r\n\r\nvalue 1\r\n"), "Invalid content-disposition");
            Assert.IsTrue(result.Contains("--" + boundary + "\r\nContent-Disposition: form-data; name=\"name 2\"\r\nContent-Type: text/plain;charset=ISO-8859-1\r\n\r\nvalue 2+1\r\n"), "Invalid content-disposition");
            Assert.IsTrue(result.Contains("--" + boundary + "\r\nContent-Disposition: form-data; name=\"xml\"\r\nContent-Type: text/xml\r\n\r\n<root><child/></root>\r\n"), "Invalid content-disposition");
            Assert.IsTrue(result.Contains("--" + boundary + "\r\nContent-Disposition: form-data; name=\"logo\"; filename=\"FileToUpload.png\"\r\nContent-Type: image/png\r\n\r\n"), "Invalid content-disposition");
        }
Esempio n. 5
0
        public void GetParameter_ReturnsNull_IfParameterIsNotInMediaType()
        {
            var mediaType = "application/json;charset=utf-8;format=indent;q=0.8";

            var parsedMediaType = new MediaType(mediaType, 0, mediaType.Length);

            // Act
            var result = parsedMediaType.GetParameter("other");

            // Assert
            Assert.False(result.HasValue);
        }
Esempio n. 6
0
        public void GetParameter_ReturnsParameter_IfParameterIsInMediaType(string mediaType)
        {
            // Arrange
            var expectedParameter = new StringSegment("utf-8");
            var parsedMediaType   = new MediaType(mediaType, 0, mediaType.Length);

            // Act
            var result = parsedMediaType.GetParameter("charset");

            // Assert
            expectedParameter.Should().Be(result);
        }
Esempio n. 7
0
        public void GetParameter_ReturnsNull_IfParameterIsNotInMediaType()
        {
            var mediaType = "application/json;charset=utf-8;format=indent;q=0.8";

            var parsedMediaType = new MediaType(mediaType, 0, mediaType.Length);

            // Act
            var result = parsedMediaType.GetParameter("other");

            // Assert
            Assert.False(result.HasValue);
        }
Esempio n. 8
0
        public void GetParameter_IsCaseInsensitive()
        {
            // Arrange
            var mediaType         = "application/json;charset=utf-8";
            var expectedParameter = new StringSegment("utf-8");

            var parsedMediaType = new MediaType(mediaType);

            // Act
            var result = parsedMediaType.GetParameter("CHARSET");

            // Assert
            expectedParameter.Should().Be(result);
        }
Esempio n. 9
0
        public void GetParameter_IsCaseInsensitive()
        {
            // Arrange
            var mediaType = "application/json;charset=utf-8";
            var expectedParameter = new StringSegment("utf-8");

            var parsedMediaType = new MediaType(mediaType);

            // Act
            var result = parsedMediaType.GetParameter("CHARSET");

            // Assert
            Assert.NotNull(result);
            Assert.Equal(expectedParameter, result);
        }
Esempio n. 10
0
        public void GetParameter_ReturnsParameter_IfParameterIsInMediaType(string mediaType)
        {
            // Arrange
            var expectedParameter = new StringSegment("utf-8");

            var parsedMediaType = new MediaType(mediaType, 0, mediaType.Length);

            // Act
            var result = parsedMediaType.GetParameter("charset");

            // Assert
            Assert.NotNull(result);
            Assert.Equal(expectedParameter, result);
        }