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>());
        }
Beispiel #4
0
 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>());
                        }
                    }
                }
            }
        }