Exemplo n.º 1
0
 /// <summary>
 /// Instantiates the ResourceObjects in the Data property
 /// </summary>
 /// <param name="data"></param>
 private void SetupResources(T data, Uri queryString = null)
 {
     // Fill data array with resource objects
     Data = new List <JsonApiResourceObject>()
     {
         JsonApiResourceBuilder.Build(data, true)
     };
 }
        public void JsonApiResourceObject_AutoAddAttributesAndRelations()
        {
            var data = new ModelWithReferences {
                Id = Guid.NewGuid().ToString(), SingleReference = new ModelWithNoReferences {
                    Id = Guid.NewGuid().ToString()
                }
            };
            var resourceObject = JsonApiResourceBuilder.Build(data, true);
            var json           = JsonConvert.SerializeObject(resourceObject, Formatting.Indented);
            var deserialized   = JsonConvert.DeserializeObject <JsonApiResourceObject>(json);
            var result         = deserialized.ToObject <ModelWithReferences>();

            Assert.IsTrue(result.Id == data.Id);
            Assert.IsTrue(result.SingleReference.Id == data.SingleReference.Id);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Populates the Included Property with ResourceObjects
        /// </summary>
        /// <param name="dataSet">The data conatining the properties</param>
        /// <param name="includedProperties">Defines which properties are to be included</param>
        private void SetupIncludes(IEnumerable <T> dataSet, IEnumerable <PropertyInfo> includedProperties, Uri queryString = null)
        {
            // ignore if no data is present
            if (!includedProperties.Any())
            {
                return;
            }

            if (Included == null)
            {
                Included = new JsonApiResourceObjectDictionary();
            }
            // process each item in data
            foreach (var data in dataSet)
            {
                // iterate over all of the items' properties and look for the requested properties
                var propertiesArray = data.GetType().GetProperties();
                foreach (var propertyInfo in propertiesArray)
                {
                    if (includedProperties.Any(x => x.Name == propertyInfo.Name))
                    {
                        if (typeof(IJsonApiDataModel).IsAssignableFrom(propertyInfo.PropertyType))
                        {
                            var rawData = propertyInfo.GetValue(data) as IJsonApiDataModel;
                            Included.AddResource(JsonApiResourceBuilder.Build(rawData, false));
                        }
                        else if (propertyInfo.PropertyType.IsNonStringEnumerable() && propertyInfo.GetValue(data) is IEnumerable <IJsonApiDataModel> rawData)
                        {
                            foreach (var item in rawData)
                            {
                                Included.AddResource(JsonApiResourceBuilder.Build(item, false));
                            }
                        }
                    }
                }
            }
            if (Included.ResourceObjectDictionary.Count < 1)
            {
                Included = null;
            }
        }
Exemplo n.º 4
0
 public static JsonApiResourceObject FromObject(this JsonApiResourceObject resourceObject, IJsonApiDataModel dataModel, bool automaticallyProcessAllRelations = true)
 {
     return(JsonApiResourceBuilder.Build(dataModel, automaticallyProcessAllRelations));
 }
Exemplo n.º 5
0
 /// <summary>
 /// Instantiates the ResourceObjects in the Data property
 /// </summary>
 /// <param name="data"></param>
 private void SetupResources(IEnumerable <T> data, Uri queryString = null)
 {
     // Fill data array with resource objects
     Data = data.Select(dataItem => JsonApiResourceBuilder.Build(dataItem, true));
 }