public void OnResourceExecuting(ResourceExecutingContext context) { var result = new ObjectResult("someValue"); foreach (var formatter in _formatters) { result.Formatters.Add(formatter); } context.Result = result; }
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); }
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); }
/// <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"); }
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]); }
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"); }