Example #1
0
        public bool Parse(ref string requestString, JsonPropertyAttribute attribute, PropertyInfo property, object propertyValue, object propertyParent)
        {
            if (attribute.PropertyName != "legal_entity[additional_owners]")
            {
                return(false);
            }
            List <StripeAccountAdditionalOwner> list = (List <StripeAccountAdditionalOwner>)property.GetValue(propertyParent, null);

            if (list == null)
            {
                return(true);
            }
            int num = 0;

            foreach (StripeAccountAdditionalOwner item in list)
            {
                IEnumerable <PropertyInfo> runtimeProperties = item.GetType().GetRuntimeProperties();
                foreach (PropertyInfo item2 in runtimeProperties)
                {
                    object value = item2.GetValue(item, null);
                    if (value != null)
                    {
                        JsonPropertyAttribute jsonPropertyAttribute = item2.GetCustomAttributes <JsonPropertyAttribute>().SingleOrDefault();
                        if (jsonPropertyAttribute != null)
                        {
                            RequestStringBuilder.ApplyParameterToRequestString(ref requestString, $"{attribute.PropertyName}[{num}]{jsonPropertyAttribute.PropertyName}", value.ToString());
                        }
                    }
                }
                num++;
            }
            return(true);
        }
        public static void CreateQuery(ref string requestString, INestedOptions options)
        {
            List <Parameter> list = FlattenParams(options);

            foreach (Parameter item in list)
            {
                RequestStringBuilder.ApplyParameterToRequestString(ref requestString, item.Key, item.Value);
            }
        }
 private static void ApplyNestedObjectProperties(ref string requestString, object nestedObject)
 {
     foreach (PropertyInfo runtimeProperty in nestedObject.GetType().GetRuntimeProperties())
     {
         object value = runtimeProperty.GetValue(nestedObject, null);
         if (value == null)
         {
             continue;
         }
         foreach (JsonPropertyAttribute customAttribute in runtimeProperty.GetCustomAttributes <JsonPropertyAttribute>())
         {
             RequestStringBuilder.ProcessPlugins(ref requestString, customAttribute, runtimeProperty, value, nestedObject);
         }
     }
 }
        public static string ApplyAllParameters(this StripeService service, object obj, string url, bool isListMethod = false)
        {
            string requestString = url;

            if (obj != null)
            {
                foreach (PropertyInfo runtimeProperty in obj.GetType().GetRuntimeProperties())
                {
                    object value = runtimeProperty.GetValue(obj, null);
                    if (value == null)
                    {
                        continue;
                    }
                    foreach (JsonPropertyAttribute customAttribute in runtimeProperty.GetCustomAttributes <JsonPropertyAttribute>())
                    {
                        if (value is INestedOptions)
                        {
                            ApplyNestedObjectProperties(ref requestString, value);
                        }
                        else
                        {
                            RequestStringBuilder.ProcessPlugins(ref requestString, customAttribute, runtimeProperty, value, obj);
                        }
                    }
                }
            }
            if (service != null)
            {
                IEnumerable <string> enumerable = from p in service.GetType().GetRuntimeProperties()
                                                  where p.Name.StartsWith("Expand") && p.PropertyType == typeof(bool)
                                                  where (bool)p.GetValue(service, null)
                                                  select p.Name;
                foreach (string item in enumerable)
                {
                    string input = item.Substring("Expand".Length);
                    input = Regex.Replace(input, "([a-z])([A-Z])", "$1_$2").ToLower();
                    if (isListMethod)
                    {
                        input = "data." + input;
                    }
                    requestString = ApplyParameterToUrl(requestString, "expand[]", input);
                }
            }
            return(requestString);
        }
        public static string ApplyAllParameters <T>(this Service <T> service, BaseOptions obj, string url, bool isListMethod = false) where T : IStripeEntity
        {
            string requestString = url;

            if (obj != null)
            {
                RequestStringBuilderObj.CreateQuery(ref requestString, obj);
                foreach (KeyValuePair <string, string> extraParam in obj.ExtraParams)
                {
                    string argument = WebUtility.UrlEncode(extraParam.Key);
                    RequestStringBuilder.ApplyParameterToRequestString(ref requestString, argument, extraParam.Value);
                }
                foreach (string item in obj.Expand)
                {
                    RequestStringBuilder.ApplyParameterToRequestString(ref requestString, "expand[]", item);
                }
            }
            if (service != null)
            {
                IEnumerable <string> enumerable = from p in service.GetType().GetRuntimeProperties()
                                                  where p.Name.StartsWith("Expand") && p.PropertyType == typeof(bool)
                                                  where (bool)p.GetValue(service, null)
                                                  select p.Name;
                foreach (string item2 in enumerable)
                {
                    string input = item2.Substring("Expand".Length);
                    input = Regex.Replace(input, "([a-z])([A-Z])", "$1_$2").ToLower();
                    if (isListMethod)
                    {
                        input = "data." + input;
                    }
                    requestString = ApplyParameterToUrl(requestString, "expand[]", input);
                }
            }
            return(requestString);
        }
 public static string ApplyParameterToUrl(string url, string argument, string value)
 {
     RequestStringBuilder.ApplyParameterToRequestString(ref url, argument, value);
     return(url);
 }