Ejemplo n.º 1
0
        public virtual void InternalActionExecuted(HttpActionExecutedContext context, CancellationToken cancellationToken)
        {
            var content = context.Response.Content as ObjectContent;

            if (content == null)
            {
                return;
            }

            var relationshipPaths = FindRelationshipPathsToInclude(context.Request);

            if (!configuration.ValidateIncludedRelationshipPaths(relationshipPaths, content.Value))
            {
                context.Response = context.Request.CreateResponse(HttpStatusCode.BadRequest);
            }

            if (!context.Response.IsSuccessStatusCode)
            {
                return;
            }

            var jsonApiContext         = new Context(context.Request.RequestUri, relationshipPaths);
            var transformedIntoJsonApi = jsonApiTransformer.Transform(content.Value, jsonApiContext);

            context.Response = context.Request.CreateResponse(HttpStatusCode.OK, transformedIntoJsonApi, configuration.DefaultJsonApiMediaType);
        }
Ejemplo n.º 2
0
        public override void OnActionExecuted(ActionExecutedContext context)
        {
            if (context.Result == null)
            {
                return;
            }

            if (BadActionResultTransformer.IsBadAction(context.Result))
            {
                var transformed = BadActionResultTransformer.Transform(context.Result);

                context.Result = new ObjectResult(transformed)
                {
                    StatusCode = transformed.Errors.First().Status
                };
                return;
            }

            var responseResult    = (ObjectResult)context.Result;
            var relationshipPaths = FindRelationshipPathsToInclude(context.HttpContext.Request);

            if (!configuration.ValidateIncludedRelationshipPaths(relationshipPaths, responseResult.Value))
            {
                context.Result = new HttpStatusCodeResult(400);
                return;
            }

            var jsonApiContext = new Context(
                configuration,
                new Uri(context.HttpContext.Request.GetDisplayUrl()),
                relationshipPaths);

            responseResult.Value = jsonApiTransformer.Transform(responseResult.Value, jsonApiContext);
        }
Ejemplo n.º 3
0
        public override void OnException(ExceptionContext context)
        {
            context.Result =
                new ObjectResult(
                    jsonApiTransformer.Transform(
                        context.Exception,
                        500));

            context.HttpContext.Response.StatusCode = 500;
        }
Ejemplo n.º 4
0
 public override void OnException(ExceptionContext context)
 {
     context.Result = new ObjectResult(jsonApiTransformer.Transform(context.Exception));
     context.HttpContext.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
 }