示例#1
0
        public static JObject getDiffFromLastChange(JToken jactual, JToken jold)
        {
            JObject jobject = new JObject();

            if (((JObject)jactual).Properties().Count <JProperty>() <= 0)
            {
                return((JObject)null);
            }
            foreach (JProperty property in ((JObject)jactual).Properties())
            {
                string snakeCase = MPBase.ToSnakeCase(property.Name);
                if (property.Value.GetType() == typeof(JObject))
                {
                    if (jold != null)
                    {
                        JObject diffFromLastChange = MPBase.getDiffFromLastChange(property.Value, jold[(object)property.Name]);
                        if (diffFromLastChange != null && diffFromLastChange.Properties().Count <JProperty>() > 0)
                        {
                            jobject.Add(snakeCase, (JToken)diffFromLastChange);
                        }
                    }
                    else
                    {
                        jobject.Add(snakeCase, property.Value);
                    }
                }
                else if (property.Value.GetType() == typeof(JArray))
                {
                    jobject.Add(snakeCase, property.Value);
                }
                else if (property.Value.GetType() == typeof(JValue))
                {
                    if (jold != null)
                    {
                        if (jold[(object)property.Name] != null)
                        {
                            if ((string)property.Value != (string)jold[(object)property.Name])
                            {
                                jobject.Add(snakeCase, property.Value);
                            }
                        }
                        else
                        {
                            jobject.Add(snakeCase, property.Value);
                        }
                    }
                    else
                    {
                        jobject.Add(snakeCase, property.Value);
                    }
                }
            }
            return(jobject);
        }
示例#2
0
 public static JObject GeneratePayload <T>(HttpMethod httpMethod, T resource) where T : MPBase
 {
     if (httpMethod.ToString() == "PUT")
     {
         return(MPBase.getDiffFromLastChange((JToken)MPCoreUtils.GetJsonFromResource <T>(resource), (JToken)resource.GetLastKnownJson()));
     }
     if (httpMethod.ToString() == "POST")
     {
         return(MPCoreUtils.GetJsonFromResource <T>(resource));
     }
     return((JObject)null);
 }