Ejemplo n.º 1
0
        public void Test1([NotNull] string contentType, char delimiter)
        {
            HttpContext context =
                GetHttpContext(("Content-Type", contentType));

            OutputFormatterWriteContext outputContext =
                GetOutputWriteContext(
                    context,
                    new[]
            {
                new { a = 1, b = 2, c = 3 },
                new { a = 2, b = 4, c = 6 }
            });

            DelimitedOutputFormatter formatter = new DelimitedOutputFormatter();

            formatter.Add(contentType, delimiter);

            // Does the formatter accept the content type?
            Assert.True(formatter.CanWriteResult(outputContext));

            formatter.WriteAsync(outputContext).Wait();

            // Did the formatter set the response headers?
            Assert.Equal($"{contentType}; charset={Encoding.UTF8.WebName}", context.Response.ContentType);
            Assert.Equal(Encoding.UTF8.WebName, context.Response.Headers["charset"]);
            Assert.Equal("present", context.Response.Headers["header"]);
            Assert.Equal(StatusCodes.Status200OK, context.Response.StatusCode);

            // Did the formatter write the response to the body?
            string eol      = Environment.NewLine;
            string expected = $"a{delimiter}b{delimiter}c{eol}1{delimiter}2{delimiter}3{eol}2{delimiter}4{delimiter}6{eol}";

            Assert.Equal(expected, GetBodyString(context.Response));
        }
Ejemplo n.º 2
0
        public static MvcOptions AddDelimitedOutputFormatter([NotNull] this MvcOptions options)
        {
            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            DelimitedOutputFormatter formatter = new DelimitedOutputFormatter();

            formatter.Add("text/csv", ',');
            formatter.Add("text/psv", '|');
            formatter.Add("text/tab-separated-values", '\t');

            options.OutputFormatters.Add(formatter);
            options.FormatterMappings.SetMediaTypeMappingForFormat("csv", "text/csv");
            options.FormatterMappings.SetMediaTypeMappingForFormat("psv", "text/psv");
            options.FormatterMappings.SetMediaTypeMappingForFormat("tsv", "text/tab-separated-values");

            return(options);
        }