Ejemplo n.º 1
0
        public void BuilderCreates()
        {
            var builder          = new MediaTypeDescriptor.Builder <ContentMediaType>((a, b, c) => new ContentMediaType(a, b, c));
            var contentMediaType = builder
                                   .WithMimeType(ContentMediaType.MimeTypes.Application.ToString().ToLower())
                                   .WithMimeSubType("json")
                                   .Build();

            Assert.Equal(ContentMediaType.Json, contentMediaType);
        }
Ejemplo n.º 2
0
    public void IncorrectFormatUsesEmptyStringAndDefaultQuality()
    {
        var mediaType         = Parse("typeOnly");
        var mediaTypeExpected = new MediaTypeDescriptor.Builder <MediaTypeTest>(
            (a, b, c) => new MediaTypeTest(a, b, c))
                                .WithMimeType("")
                                .WithMimeSubType("")
                                .Build();

        Assert.Equal(mediaTypeExpected, mediaType);
    }
Ejemplo n.º 3
0
    public void SimpleTypeEmptyParameters()
    {
        var mediaType         = Parse("application/json");
        var mediaTypeExpected = new MediaTypeDescriptor.Builder <MediaTypeTest>(
            (a, b, c) => new MediaTypeTest(a, b, c))
                                .WithMimeType("application")
                                .WithMimeSubType("json")
                                .Build();

        Assert.Equal(mediaTypeExpected, mediaType);
    }
Ejemplo n.º 4
0
        public void SpecificParameterGreaterThanGenericWithSameQualityFactor()
        {
            var acceptMediaType1 = new MediaTypeDescriptor.Builder <ResponseMediaTypeSelector.AcceptMediaType>(
                (a, b, c) => new ResponseMediaTypeSelector.AcceptMediaType(a, b, c))
                                   .WithMimeType("application")
                                   .WithMimeSubType("xml")
                                   .WithParameter("version", "1.0")
                                   .Build();

            var acceptMediaType2 = new ResponseMediaTypeSelector.AcceptMediaType("application", "json");

            Assert.Equal(1, acceptMediaType1.CompareTo(acceptMediaType2));
            Assert.Equal(-1, acceptMediaType2.CompareTo(acceptMediaType1));
        }
Ejemplo n.º 5
0
    private static void ParseAttributes <T>(MediaTypeDescriptor.Builder <T> builder, ArraySegment <string> parameters) where T : MediaTypeDescriptor
    {
        foreach (var parameter in parameters)
        {
            var parameterFieldAndValue = parameter.Split(MediaTypeDescriptor.ParameterAssignment);

            if (parameterFieldAndValue.Length == ParameterAndValueSize)
            {
                var attributeName = parameterFieldAndValue[ParameterFieldOffset];
                var value         = parameterFieldAndValue[ParameterValueOffset];
                builder.WithParameter(attributeName, value);
            }
        }
    }
Ejemplo n.º 6
0
    public void ParseParameters()
    {
        var mediaTypeDescriptor = Parse("application/*;q=0.8;foo=bar");

        var mediaTypeExpected = new MediaTypeDescriptor.Builder <MediaTypeTest>(
            (a, b, c) => new MediaTypeTest(a, b, c))
                                .WithMimeType("application")
                                .WithMimeSubType("*")
                                .WithParameter("q", "0.8")
                                .WithParameter("foo", "bar")
                                .Build();

        Assert.Equal(mediaTypeExpected, mediaTypeDescriptor);
        Assert.Equal("application/*;q=0.8;foo=bar", mediaTypeDescriptor.ToString());
    }
Ejemplo n.º 7
0
        public void QualityFactorTrumpsSpecificity()
        {
            var acceptMediaType1 = new MediaTypeDescriptor.Builder <ResponseMediaTypeSelector.AcceptMediaType>(
                (a, b, c) => new ResponseMediaTypeSelector.AcceptMediaType(a, b, c))
                                   .WithMimeType("text")
                                   .WithMimeSubType("*")
                                   .Build();

            var acceptMediaType2 = new MediaTypeDescriptor.Builder <ResponseMediaTypeSelector.AcceptMediaType>(
                (a, b, c) => new ResponseMediaTypeSelector.AcceptMediaType(a, b, c))
                                   .WithMimeType("text")
                                   .WithMimeSubType("json")
                                   .WithParameter("q", "0.8")
                                   .Build();

            Assert.Equal(1, acceptMediaType1.CompareTo(acceptMediaType2));
            Assert.Equal(-1, acceptMediaType2.CompareTo(acceptMediaType1));
        }
Ejemplo n.º 8
0
    public static T ParseFrom <T>(string mediaTypeDescriptor, MediaTypeDescriptor.Builder <T> builder) where T : MediaTypeDescriptor
    {
        var descriptorParts = mediaTypeDescriptor.Split(MediaTypeDescriptor.ParameterSeparator);

        if (descriptorParts.Length > 1)
        {
            ParseAttributes(builder, new ArraySegment <string>(descriptorParts, 1, descriptorParts.Length - 1));
        }

        var mimeParts = descriptorParts[0].Split(MediaTypeDescriptor.MimeSubtypeSeparator);

        if (mimeParts.Length == MimeTypeAndSubtypeSize)
        {
            builder.WithMimeType(mimeParts[0].Trim())
            .WithMimeSubType(mimeParts[1].Trim());
        }

        return(builder.Build());
    }