public string ActionToRoute(HypermediaObject hypermediaObject, HypermediaActionBase action) { var lookupType = action.GetType(); var routeKeys = routeKeyFactory.GetHypermediaRouteKeys(hypermediaObject); return(this.GetRouteByType(lookupType, routeKeys)); }
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)); }
private void AddActionParameters(HypermediaActionBase hypermediaAction, JObject jAction, string acceptedMediaType) { if (!hypermediaAction.HasParameter()) { return; } jAction.Add("type", acceptedMediaType ?? DefaultMediaTypes.ApplicationJson); AddActionFields(jAction, hypermediaAction); }
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)); }
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)); }