public string ActionToRoute(HypermediaObject hypermediaObject, HypermediaActionBase action)
        {
            var lookupType = action.GetType();
            var routeKeys  = routeKeyFactory.GetHypermediaRouteKeys(hypermediaObject);

            return(this.GetRouteByType(lookupType, routeKeys));
        }
Пример #2
0
        private void AddActionFields(JObject jAction, HypermediaActionBase hypermediaAction)
        {
            var parameterType = hypermediaAction.ParameterType();

            var jfield = new JObject
            {
                { "name", parameterType.BeautifulName() },
                { "type", DefaultMediaTypes.ApplicationJson }
            };

            if (!routeResolver.TryGetRouteByType(parameterType, out var classRoute))
            {
                var generatedRouteUrl = routeResolver.RouteUrl(RouteNames.ActionParameterTypes, new { parameterTypeName = parameterType.BeautifulName() });
                jfield.Add("class", new JArray {
                    generatedRouteUrl
                });
            }
            else
            {
                jfield.Add("class", new JArray {
                    classRoute.Url
                });
            }

            AddPrefilledValue(jfield, hypermediaAction);

            jAction.Add("fields", new JArray {
                jfield
            });
        }
        public ResolvedRoute ActionToRoute(HypermediaObject actionHostObject, HypermediaActionBase action)
        {
            var lookupType = action.GetType();
            var routeKeys  = routeKeyFactory.GetActionRouteKeys(action, actionHostObject);

            return(this.GetRouteByType(lookupType, routeKeys));
        }
Пример #4
0
        private void AddActionParameters(HypermediaActionBase hypermediaAction, JObject jAction, string acceptedMediaType)
        {
            if (!hypermediaAction.HasParameter())
            {
                return;
            }

            jAction.Add("type", acceptedMediaType ?? DefaultMediaTypes.ApplicationJson);
            AddActionFields(jAction, hypermediaAction);
        }
Пример #5
0
        public object GetActionRouteKeys(HypermediaActionBase action, HypermediaObject actionHostObject)
        {
            if (!this.routeRegister.TryGetKeyProducer(action.GetType(), out IKeyProducer keyProducer) &&
                !this.routeRegister.TryGetKeyProducer(actionHostObject.GetType(), out keyProducer))
            {
                return(new { });
            }

            return(keyProducer.CreateFromHypermediaObject(actionHostObject));
        }
        private void AddActionParameters(HypermediaActionBase hypermediaAction, JObject jAction)
        {
            if (!hypermediaAction.HasParameter())
            {
                return;
            }

            jAction.Add("type", DefaultContentTypes.ApplicationJson);
            AddActionFields(jAction, hypermediaAction.ParameterType());
        }
        public object GetActionRouteKeys(HypermediaActionBase action, HypermediaObject actionHostObject)
        {
            var keyProducer = this.routeRegister.GetKeyProducer(action.GetType());

            if (keyProducer == null)
            {
                return(new { });
            }

            return(keyProducer.CreateFromHypermediaObject(actionHostObject));
        }
Пример #8
0
        private void AddPrefilledValue(JObject jfield, HypermediaActionBase hypermediaAction)
        {
            var prefilledParameter = hypermediaAction.GetPrefilledParameter();

            if (prefilledParameter == null)
            {
                return;
            }

            jfield.Add("value", SerializeObjectProperties(prefilledParameter));
        }
        private void AddGeneralSirenActionProperties(JObject jAction, PropertyInfo property, HypermediaObject hypermediaObject, HypermediaActionBase actionBase)
        {
            var hypermediaActionAttribute = GetHypermediaActionAttribute(property);

            string actionName;

            if (!string.IsNullOrEmpty(hypermediaActionAttribute?.Name))
            {
                actionName = hypermediaActionAttribute.Name;
            }
            else
            {
                actionName = property.Name;
            }
            jAction.Add("name", actionName);

            if (!string.IsNullOrEmpty(hypermediaActionAttribute?.Title))
            {
                jAction.Add("title", hypermediaActionAttribute.Title);
            }

            jAction.Add("method", "POST");
            jAction.Add("href", routeResolver.ActionToRoute(hypermediaObject, actionBase));
        }