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); }
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); }
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); }
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)); }
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); } } }
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()); }
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)); }
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()); }