public string ObjectToRoute(HypermediaObject hypermediaObject) { var lookupType = hypermediaObject.GetType(); var routeKeys = this.routeKeyFactory.GetHypermediaRouteKeys(hypermediaObject); return(this.GetRouteByType(lookupType, routeKeys)); }
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); }
public HypermediaObjectReference(HypermediaObject hypermediaObject) : base(hypermediaObject.GetType()) { if (hypermediaObject == null) { throw new HypermediaException("HypermediaObject is null."); } this.reference = hypermediaObject; }
public object GetHypermediaRouteKeys(HypermediaObject hypermediaObject) { if (!this.routeRegister.TryGetKeyProducer(hypermediaObject.GetType(), out var keyProducer)) { return(new { }); } return(keyProducer.CreateFromHypermediaObject(hypermediaObject)); }
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); }
private static HypermediaObjectAttribute GetHypermediaObjectAttribute(HypermediaObject hypermediaObject) { return(GetHypermediaObjectAttribute(hypermediaObject.GetType())); }
private static void AddClasses(HypermediaObject hypermediaObject, JObject sirenJson, HypermediaObjectAttribute hypermediaObjectAttribute) { var hmoType = hypermediaObject.GetType(); AddClasses(hmoType, sirenJson, hypermediaObjectAttribute); }