public void OnResourceExecuting(ResourceExecutingContext context)
            {
                var result = new ObjectResult("someValue");
                foreach (var formatter in _formatters)
                {
                    result.Formatters.Add(formatter);
                }

                context.Result = result;
            }
Esempio n. 2
0
            public void OnResourceExecuting(ResourceExecutingContext context)
            {
                // InputFormatters collection contains JsonInputFormatter and JsonPatchInputFormatter. Picking
                // JsonInputFormatter by matching the typename
                var jsonFormatter = context.InputFormatters.OfType<JsonInputFormatter>()
                    .Where(t => t.GetType() == typeof(JsonInputFormatter)).FirstOrDefault();

                context.InputFormatters.Clear();
                context.InputFormatters.Add(jsonFormatter);
            }
Esempio n. 3
0
        public void OnResourceExecuting(ResourceExecutingContext context)
        {
            var descriptions = new List<ApiExplorerData>();
            foreach (var group in _descriptionProvider.ApiDescriptionGroups.Items)
            {
                foreach (var description in group.Items)
                {
                    if (context.ActionDescriptor == description.ActionDescriptor)
                    {
                        descriptions.Add(CreateSerializableData(description));
                    }
                }
            }

            context.Result = new JsonResult(descriptions);
        }
Esempio n. 4
0
        /// <inheritdoc />
        public void OnResourceExecuting(ResourceExecutingContext context)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            // Only execute if the current filter is the one which is closest to the action.
            // Ignore all other filters. This is to ensure we have a overriding behavior.
            if (IsApplicable(context.ActionDescriptor))
            {
                MediaTypeHeaderValue requestContentType = null;
                MediaTypeHeaderValue.TryParse(context.HttpContext.Request.ContentType, out requestContentType);

                // Confirm the request's content type is more specific than a media type this action supports e.g. OK
                // if client sent "text/plain" data and this action supports "text/*".
                if (requestContentType != null &&
                    !ContentTypes.Any(contentType => requestContentType.IsSubsetOf(contentType)))
                {
                    context.Result = new UnsupportedMediaTypeResult();
                }
            }
        }
 public void OnResourceExecuting(ResourceExecutingContext context)
 {
     context.HttpContext.Response.Headers.Append(
         "filters",
         Name + " - OnResourceExecuting");
 }
Esempio n. 6
0
        public void FormatFilter_ContextContainsFormat_InRouteAndQueryData()
        {
            // If the format is present in both route and query data, the one in route data wins

            // Arrange  
            var mediaType = MediaTypeHeaderValue.Parse("application/json");
            var mockObjects = new MockObjects("json", FormatSource.RouteData);
            var httpContext = new Mock<HttpContext>();

            // Query contains xml    
            httpContext.Setup(c => c.Request.Query.ContainsKey("format")).Returns(true);
            httpContext.Setup(c => c.Request.Query.Get("format")).Returns("xml");

            // Routedata contains json
            var data = new RouteData();
            data.Values.Add("format", "json");

            var ac = new ActionContext(httpContext.Object, data, new ActionDescriptor());

            var resultExecutingContext = new ResultExecutingContext(
                ac,
                new IFilter[] { },
                new ObjectResult("Hello!"),
                controller: new object());

            var resourceExecutingContext = new ResourceExecutingContext(
                ac,
                new IFilter[] { });

            var filter = new FormatFilter(mockObjects.IOptions, mockObjects.ScopedInstance);

            // Act
            filter.OnResourceExecuting(resourceExecutingContext);
            filter.OnResultExecuting(resultExecutingContext);

            // Assert
            var objectResult = Assert.IsType<ObjectResult>(resultExecutingContext.Result);
            Assert.Equal(1, objectResult.ContentTypes.Count);
            AssertMediaTypesEqual(mediaType, objectResult.ContentTypes[0]);
        }
Esempio n. 7
0
 public ResourceExecutingContext CreateResourceExecutingContext(IFilter[] filters)
 {
     var context = new ResourceExecutingContext(
         MockActionContext,
         filters);
     return context;
 }
        public void OnResourceExecuting_ForAContentTypeMatch_IsNoOp(string contentType)
        {
            // Arrange
            var httpContext = new DefaultHttpContext();
            httpContext.Request.ContentType = contentType;
            var consumesFilter = new ConsumesAttribute("application/json", "application/xml");
            var actionWithConstraint = new ActionDescriptor()
            {
                ActionConstraints = new List<IActionConstraintMetadata>() { consumesFilter },
                FilterDescriptors =
                    new List<FilterDescriptor>() { new FilterDescriptor(consumesFilter, FilterScope.Action) }
            };
            var actionContext = new ActionContext(httpContext, new RouteData(), actionWithConstraint);
            var resourceExecutingContext = new ResourceExecutingContext(actionContext, new[] { consumesFilter });

            // Act
            consumesFilter.OnResourceExecuting(resourceExecutingContext);

            // Assert
            Assert.Null(resourceExecutingContext.Result);
        }
 public void OnResourceExecuting(ResourceExecutingContext context)
 {
     // ShortCircuit.
     context.Result = new ObjectResult("someValue");
 }