예제 #1
0
        private void SaveSplitterSwagger(SwaggerRoot swagger, string entityName)
        {
            var fileNameWithoutExtension = Path.GetFileNameWithoutExtension(this.swaggerJsonFile);
            var extension   = Path.GetExtension(this.swaggerJsonFile);
            var newFileName = fileNameWithoutExtension + entityName + extension;

            newFileName = Path.Combine(this.outputFolder, newFileName);
            File.WriteAllText(newFileName, swagger.ToJson());
        }
예제 #2
0
        internal string GenerateForControllers(IEnumerable <Type> types)
        {
            var swagger = new SwaggerRoot
            {
                Info    = _scope.Settings.Info,
                Host    = _scope.Settings.Host,
                Schemes = _scope.Settings.Schemes,
                Paths   = types
                          .SelectMany(GeneratePaths)
                          .ToDictionary(t => t.Item1, t => t.Item2),
                Definitions = _scope.SwaggerSchemas
            };

            swagger.Security            = _scope.Settings.Security;
            swagger.SecurityDefinitions = _scope.Settings.SecurityDefinitions;
            //Add default error model
            swagger.Definitions.Add(ErrorModel.Name, ErrorModel.Schema);
            return(swagger.ToJson());
        }
예제 #3
0
        internal string GenerateForControllers(IEnumerable <Type> types)
        {
            var swagger = new SwaggerRoot
            {
                Info    = _scope.Settings.Info,
                Host    = _scope.Settings.Host,
                Schemes = _scope.Settings.Schemes,
                Paths   = types
                          .SelectMany(GeneratePaths)
                          .ToLookup(t => t.Item1, t => t.Item2) // for when methods for same route where in different classes
                          .ToDictionary(g => g.Key, t => PathItem.Merge(t.ToArray())),
                Definitions         = _scope.SwaggerSchemas,
                Security            = _scope.Settings.Security,
                SecurityDefinitions = _scope.Settings.SecurityDefinitions,
                Produces            = _scope.Settings.Produces
            };

            swagger.Definitions.Add(ErrorModel.Name, ErrorModel.Schema);
            return(swagger.ToJson());
        }
예제 #4
0
        private void CreateSwaggerJson()
        {
            var swaggerDefinitions = this.swaggerRoot.Definitions.Keys.ToList();

            foreach (var className in swaggerDefinitions)
            {
                var    typeDescription = this.typeDescriptions.FirstOrDefault(t => t.CSharpName == className);
                Schema schema;

                if (this.swaggerRoot.Definitions.TryGetValue(className, out schema))
                {
                    schema.Type       = "object";
                    schema.Properties = new Dictionary <string, Schema>();
                    foreach (var columnDescription in typeDescription.ColumnDescriptions)
                    {
                        var propertySchema = new Schema
                        {
                            Type   = GetSwaggerType(columnDescription),
                            Ref    = GetSwaggerRef(columnDescription),
                            Format = GetSwaggerFormat(columnDescription),
                        };
                        var itemsRef  = GetSwaggerItemsRef(columnDescription);
                        var itemsType = GetSwaggerItemsType(columnDescription);

                        if (itemsRef != null || itemsType != null)
                        {
                            propertySchema.Items = new Item {
                                Ref = itemsRef, Type = itemsType
                            };
                        }
                        schema.Properties.Add(Utils.Utils.CamelCase(columnDescription.CSharpName), propertySchema);
                    }
                }
            }

            var jsonFileName = Path.Combine(this.outputDirectory, "swaggerBase.json");

            File.WriteAllText(jsonFileName, swaggerRoot.ToJson());
        }