示例#1
0
        private static object GenerateForEmbeddedRule(EntityRule rule, IActionConfiguration actionConfiguration,
                                                      Dictionary <string, List <string> > routeRelations, object originalObject)
        {
            var actionExecutedContext     = ActionCallContext.Get <HttpActionExecutedContext>();
            var entityActionConfiguration = HypermediaControllerConfiguration.Instance.GetcontrollerActionConfiguration(rule.ControllerType, rule.ControllerAction, actionExecutedContext.Request.Headers.Accept);

            if (entityActionConfiguration == null)
            {
                return(null);
            }

            var referencedObject = rule.GetReferencedObjectInstance(originalObject);

            if (referencedObject == null)
            {
                return(null);
            }

            var transformed = ActionResponseTransformer.TransformPayload(entityActionConfiguration, referencedObject);

            if (transformed == null)
            {
                return(null);
            }

            if (transformed is IEnumerable)
            {
                throw new Exception(string.Format("Unable to generate enumerable entity object from controller {0} action {1}. Consider using outer object.", actionConfiguration.ControllerType.FullName, actionConfiguration.ActionMethodInfo));
            }

            AssignRelName(transformed, rule.Rel);

            return(transformed);
        }
示例#2
0
        public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
        {
            var content = ActionResponseTransformer.Transform(actionExecutedContext);

            if (content == null)
            {
                return;
            }

            actionExecutedContext.Response.Content = content;
        }