private void CreateTransitions(JObject document, IRepresentorBuilder builder) { if (document["_links"] == null) { return; } foreach (var child in ((JObject)document["_links"]).Properties()) { var rel = child.Name; var array = document["_links"][rel] as JArray; if (array == null) { // single link for this rel only builder.AddTransition(GetTransitionFromLinkObject(document["_links"][rel], rel)); } else { // create a transition for each array element foreach (var link in array) { builder.AddTransition(GetTransitionFromLinkObject(link, rel)); } } } }
private void CreateEmbeddedResources(JObject document, IRepresentorBuilder currentBuilder, Func <IRepresentorBuilder> builderFactoryMethod) { if (document["_embedded"] == null) { return; } var embedded = (JObject)document["_embedded"]; foreach (var property in embedded.Properties()) { var propertyJObject = embedded[property.Name]; if (property.Name == "items") // collections use the "items" embedded resource key by convention { currentBuilder.SetCollection(GetRepresentorsFromEmbeddedJObject(builderFactoryMethod, propertyJObject)); } else { foreach (var representor in GetRepresentorsFromEmbeddedJObject(builderFactoryMethod, propertyJObject)) { currentBuilder.AddEmbeddedResource(property.Name, representor); } } } }
private static void SetSelfLinkIfPresent(JObject document, IRepresentorBuilder builder) { if (document["_links"] == null) { return; } if (document["_links"]["self"] == null) { return; } if (document["_links"]["self"]["href"] == null) { return; } builder.SetSelfLink(document["_links"]["self"]["href"].Value <string>()); }
protected void SetAttributes(JObject document, IRepresentorBuilder builder) { builder.SetAttributes(document); }
private void CreateEmbeddedResources(JObject document, IRepresentorBuilder currentBuilder, Func<IRepresentorBuilder> builderFactoryMethod) { if (document["_embedded"] == null) return; var embedded = (JObject)document["_embedded"]; foreach (var property in embedded.Properties()) { var propertyAsArray = embedded[property.Name] as JArray; if (propertyAsArray != null) { // multiple items in same embedded resource key as an array foreach (var item in propertyAsArray.OfType<JObject>()) { var builderResult = BuildRepresentorBuilderFromJObject(builderFactoryMethod, item); currentBuilder.AddEmbeddedResource(property.Name, builderResult.ToRepresentor()); } } else { // single item under resource key var builderResult = BuildRepresentorBuilderFromJObject(builderFactoryMethod, (JObject)embedded[property.Name]); currentBuilder.AddEmbeddedResource(property.Name, builderResult.ToRepresentor()); } } }
private static void SetSelfLinkIfPresent(JObject document, IRepresentorBuilder builder) { if (document["_links"] == null) return; if (document["_links"]["self"] == null) return; if (document["_links"]["self"]["href"] == null) return; builder.SetSelfLink(document["_links"]["self"]["href"].Value<string>()); }
private static void CreateTransitions(JObject document, IRepresentorBuilder builder) { if (document["_links"] == null) return; foreach (var child in ((JObject) document["_links"]).Properties()) { var rel = child.Name; var array = document["_links"][rel] as JArray; if (array == null) { if (document["_links"][rel]["href"] != null) { var title = document["_links"][rel]["title"]; // single link for this rel only builder.AddTransition(rel, document["_links"][rel]["href"].Value<string>(), (title == null) ? null : title.Value<string>()); } } else { // create a transition for each array element foreach (var link in array) { if (link["href"] != null) { var title = link["title"]; builder.AddTransition(rel, link["href"].Value<string>(), (title == null) ? null : title.Value<string>()); } } } } }