public string ObjectToRoute(HypermediaObject hypermediaObject)
        {
            var lookupType = hypermediaObject.GetType();
            var routeKeys  = this.routeKeyFactory.GetHypermediaRouteKeys(hypermediaObject);

            return(this.GetRouteByType(lookupType, routeKeys));
        }
Esempio n. 2
0
        private void AddActions(HypermediaObject hypermediaObject, JObject sirenJson)
        {
            var properties = hypermediaObject.GetType().GetTypeInfo().GetProperties(BindingFlags.Public | BindingFlags.Instance);

            var jActions = new JArray();

            foreach (var property in properties)
            {
                if (PropertyHasIgnoreAttribute(property))
                {
                    continue;
                }
                if (!IsHypermediaAction(property))
                {
                    continue;
                }

                var action     = property.GetValue(hypermediaObject);
                var actionBase = (HypermediaActionBase)action;

                if (actionBase.CanExecute())
                {
                    var jAction       = new JObject();
                    var resolvedRoute = this.routeResolver.ActionToRoute(hypermediaObject, actionBase);
                    AddGeneralSirenActionProperties(jAction, property, resolvedRoute);
                    AddActionParameters(actionBase, jAction, resolvedRoute.AcceptableMediaType);

                    jActions.Add(jAction);
                }
            }

            sirenJson.Add("actions", jActions);
        }
Esempio n. 3
0
        public HypermediaObjectReference(HypermediaObject hypermediaObject) : base(hypermediaObject.GetType())
        {
            if (hypermediaObject == null)
            {
                throw new HypermediaException("HypermediaObject is null.");
            }

            this.reference = hypermediaObject;
        }
Esempio n. 4
0
        public object GetHypermediaRouteKeys(HypermediaObject hypermediaObject)
        {
            if (!this.routeRegister.TryGetKeyProducer(hypermediaObject.GetType(), out var keyProducer))
            {
                return(new { });
            }

            return(keyProducer.CreateFromHypermediaObject(hypermediaObject));
        }
Esempio n. 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));
        }
        public object GetHypermediaRouteKeys(HypermediaObject hypermediaObject)
        {
            var keyProducer = this.routeRegister.GetKeyProducer(hypermediaObject.GetType());

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

            return(keyProducer.CreateFromHypermediaObject(hypermediaObject));
        }
        private void AddProperties(HypermediaObject hypermediaObject, JObject sirenJson)
        {
            var type             = hypermediaObject.GetType();
            var publicProperties = type.GetProperties(BindingFlags.Public | BindingFlags.Instance);

            var jProperties = new JObject();

            foreach (var publicProperty in publicProperties)
            {
                AddProperty(hypermediaObject, publicProperty, jProperties);
            }

            sirenJson.Add("properties", jProperties);
        }
Esempio n. 8
0
 private static HypermediaObjectAttribute GetHypermediaObjectAttribute(HypermediaObject hypermediaObject)
 {
     return(GetHypermediaObjectAttribute(hypermediaObject.GetType()));
 }
Esempio n. 9
0
        private static void AddClasses(HypermediaObject hypermediaObject, JObject sirenJson, HypermediaObjectAttribute hypermediaObjectAttribute)
        {
            var hmoType = hypermediaObject.GetType();

            AddClasses(hmoType, sirenJson, hypermediaObjectAttribute);
        }