Ejemplo n.º 1
0
        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");
        }
Ejemplo n.º 2
0
 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");
     }
 }
Ejemplo n.º 3
0
        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");
        }