public string GenerateUrlParameterDefinition(ApiUrlParameter apiUrlParameter)
        {
            var indent  = new Indent();
            var builder = new StringBuilder();

            var typeNameForUrlParameter = apiUrlParameter.ToCSharpClassName();

            if (apiUrlParameter.Deprecation != null)
            {
                builder.AppendLine(apiUrlParameter.Deprecation.ToCSharpDeprecation());
            }

            // Parameter type
            builder.AppendLine($"{indent}[JsonConverter(typeof(UrlParameterConverter))]");
            builder.AppendLine($"{indent}public abstract class {typeNameForUrlParameter} : IUrlParameter");
            builder.AppendLine($"{indent}{{");
            indent.Increment();

            foreach (var apiUrlParameterOption in apiUrlParameter.Options)
            {
                builder.Append(
                    indent.Wrap(
                        GenerateUrlParameterOptionFactoryMethod(apiUrlParameterOption, typeNameForUrlParameter)));
            }

            foreach (var apiUrlParameterOption in apiUrlParameter.Options)
            {
                builder.Append(
                    indent.Wrap(
                        GenerateUrlParameterOptionClass(apiUrlParameterOption, typeNameForUrlParameter)));
            }

            indent.Decrement();
            builder.AppendLine($"{indent}}}");
            return(builder.ToString());
        }
Exemple #2
0
 public static string ToCSharpClassName(this ApiUrlParameter subject)
 => CSharpIdentifier.ForClassOrNamespace(subject.Name);