public void Generate(OpenApiDocument swagger, GeneratorExecutionContext context) { var data = swagger.Operations .Where(o => o.Method != OpenApiOperationMethod.Options) .GroupBy(o => o.Operation.OperationId) .Select(g => { var gs = g.ToArray(); for (var i = 1; i < g.Count(); i++) { gs[i].Operation.OperationId += i; } return(gs); }) .SelectMany(g => g) .Select(o => { var ps = o.Operation.ActualParameters.OrderBy(p => !p.IsRequired).ToArray(); o.Operation.Parameters.Clear(); var name = new HashSet <string>(); var i = 1; foreach (var p in ps) { if (name.Contains(p.Name)) { p.Name = p.Name + i++; } o.Operation.Parameters.Add(p); name.Add(p.Name); } return(o); }) .Select(o => { o.Path = o.Path.TrimStart('/'); o.Method = char.ToUpper(o.Method[0]) + o.Method.Substring(1); return(o); }) .ToArray(); context.RenderToContext("IKubernetes.cs.template", data, "IKubernetes.g.cs"); context.RenderToContext("Kubernetes.cs.template", data, "Kubernetes.g.cs"); context.RenderToContext("KubernetesExtensions.cs.template", data, "KubernetesExtensions.g.cs"); }
public void Generate(OpenApiDocument swagger, GeneratorExecutionContext context) { foreach (var kv in swagger.Definitions) { var def = kv.Value; var clz = classNameHelper.GetClassNameForSchemaDefinition(def); context.RenderToContext( "Model.cs.template", new { clz, def, properties = def.Properties.Values }, $"Models_{clz}.g.cs"); } }
public void Generate(OpenApiDocument swagger, GeneratorExecutionContext context) { // Generate the interface declarations var skippedTypes = new HashSet <string> { "V1WatchEvent" }; var definitions = swagger.Definitions.Values .Where( d => d.ExtensionData != null && d.ExtensionData.ContainsKey("x-kubernetes-group-version-kind") && !skippedTypes.Contains(classNameHelper.GetClassName(d))); context.RenderToContext("ModelExtensions.cs.template", definitions, "ModelExtensions.g.cs"); }