Exemple #1
0
        public async Task <SwaggerService> RunAsync()
        {
            return(await Task.Run(() =>
            {
                var generator = new WebApiAssemblyToSwaggerGenerator(Settings);

                var controllerNames = ControllerNames.ToList();
                if (!string.IsNullOrEmpty(ControllerName))
                {
                    controllerNames.Add(ControllerName);
                }

                controllerNames = controllerNames.Where(s => !string.IsNullOrWhiteSpace(s)).Distinct().ToList();
                if (!controllerNames.Any() && Settings.AssemblyPaths?.Length > 0)
                {
                    controllerNames = generator.GetControllerClasses().ToList();
                }

                var service = generator.GenerateForControllers(controllerNames);

                if (!string.IsNullOrEmpty(ServiceHost))
                {
                    service.Host = ServiceHost;
                }
                if (ServiceSchemes != null && ServiceSchemes.Any())
                {
                    service.Schemes = ServiceSchemes.Select(s => (SwaggerSchema)Enum.Parse(typeof(SwaggerSchema), s, true)).ToList();
                }

                return service;
            }));
        }
        private Task LoadAssembliesAsync()
        {
            return(RunTaskAsync(async() =>
            {
                AllControllerNames = await Task.Run(() =>
                {
                    if (Command.Settings.AssemblyPaths?.Length > 0)
                    {
                        var generator = new WebApiAssemblyToSwaggerGenerator(Command.Settings);
                        return generator.GetControllerClasses();
                    }
                    else
                    {
                        return new string[] { }
                    };
                });

                if (ControllerNames != null)
                {
                    var newControllerNames = ControllerNames.ToList();
                    foreach (var controller in newControllerNames.ToArray())
                    {
                        if (!AllControllerNames.Contains(controller))
                        {
                            newControllerNames.Remove(controller);
                        }
                    }
                    ControllerNames = newControllerNames.ToArray();
                }
                else
                {
                    ControllerNames = new string[] { }
                };
            }));
        }
Exemple #3
0
        static void Main(string[] args)
        {
            var currentFolder = Directory.GetCurrentDirectory();
            var pathToDll     = Path.Combine(currentFolder, "..", "ContactsList/bin/Debug/netcoreapp1.1/AspNetCoreSpa.dll");
            var settings      = new WebApiAssemblyToSwaggerGeneratorSettings
            {
                AssemblyPaths               = new string[] { pathToDll },
                DefaultUrlTemplate          = "api/{controller}/{action}/{id}",
                DefaultPropertyNameHandling = NJsonSchema.PropertyNameHandling.CamelCase
            };

            //var excluded = new string[] { "Manage", "Base", "Home" };
            var generator  = new WebApiAssemblyToSwaggerGenerator(settings);
            var allClasses = generator.GetControllerClasses();
            //var necessaryClasses = allClasses.Except(allClasses.Where(x => excluded.Any(y => x.Contains(y)))
            //    ).ToArray();
            var controllersToGenerate = new string[] { "File" };
            var necessaryClasses      = allClasses.Where(x => controllersToGenerate.Any(y => x.Contains(y)))
                                        .ToArray();
            var document = generator.GenerateForControllersAsync(necessaryClasses).Result;

            var settingsForClientApiGeneration = new SwaggerToTypeScriptClientGeneratorSettings
            {
                ClassName = "{controller}Client",
                Template  = TypeScriptTemplate.Angular
            };

            var generatorApi = new SwaggerToTypeScriptClientGenerator(document, settingsForClientApiGeneration);
            var code         = generatorApi.GenerateFile();

            code = ImproveGeneration(code);
            File.WriteAllText(Path.Combine(currentFolder, "..", "ContactsList/Client/app", "apiDefinitions.ts"), code);
        }
        public async Task <string> RunAsync()
        {
            var generator = new WebApiAssemblyToSwaggerGenerator(Settings);

            var service = string.IsNullOrEmpty(ControllerName)
                ? generator.GenerateForAssemblyControllers()
                : generator.GenerateForSingleController(ControllerName);

            return(service.ToJson());
        }
        private Task LoadAssembly()
        {
            return(RunTaskAsync(async() =>
            {
                AllControllerNames = await Task.Run(() =>
                {
                    var generator = new WebApiAssemblyToSwaggerGenerator(AssemblyPath);
                    return generator.GetControllerClasses();
                });

                ControllerName = AllControllerNames.FirstOrDefault();
            }));
        }
Exemple #6
0
        public override async Task RunAsync(CommandLineProcessor processor, IConsoleHost host)
        {
            var generator = new WebApiAssemblyToSwaggerGenerator(Assembly);

            generator.JsonSchemaGeneratorSettings.DefaultEnumHandling = EnumHandling;

            var service = string.IsNullOrEmpty(Controller) ?
                          generator.GenerateForAssemblyControllers(UrlTemplate) :
                          generator.GenerateForSingleController(Controller, UrlTemplate);

            var json = service.ToJson();

            WriteOutput(host, json);
        }
Exemple #7
0
        public void When_controller_type_is_not_found_then_type_load_exception_is_thrown()
        {
            //// Arrange
            var settings = new WebApiAssemblyToSwaggerGeneratorSettings
            {
                AssemblyPath       = @"./NSwag.CodeGeneration.Tests.dll",
                DefaultUrlTemplate = "api/{controller}/{action}/{id}"
            };

            var generator = new WebApiAssemblyToSwaggerGenerator(settings);

            //// Act
            var swaggerService = generator.GenerateForController("NonExistingClass"); // Should throw exception

            //// Assert
        }
        public async Task When_controller_type_is_not_found_then_type_load_exception_is_thrown()
        {
            //// Arrange
            var settings = new WebApiAssemblyToSwaggerGeneratorSettings
            {
                AssemblyPaths      = new[] { @"./NSwag.SwaggerGeneration.WebApi.Tests.dll" },
                DefaultUrlTemplate = "api/{controller}/{action}/{id}"
            };

            var generator = new WebApiAssemblyToSwaggerGenerator(settings);

            //// Act
            var document = await generator.GenerateForControllersAsync(new[] { "NonExistingClass" }); // Should throw exception

            //// Assert
        }
Exemple #9
0
        private Task LoadAssemblyAsync(bool updateSelectedController)
        {
            return(RunTaskAsync(async() =>
            {
                AllControllerNames = await Task.Run(() =>
                {
                    var generator = new WebApiAssemblyToSwaggerGenerator(Command.Settings);
                    return generator.GetControllerClasses();
                });

                if (updateSelectedController)
                {
                    if (ControllerName != null && !AllControllerNames.Contains(ControllerName))
                    {
                        ControllerName = AllControllerNames.FirstOrDefault();
                    }
                }
            }));
        }
 public async Task <string> GenerateSwaggerAsync()
 {
     return(await RunTaskAsync(async() =>
     {
         return await Task.Run(() =>
         {
             var generator = new WebApiAssemblyToSwaggerGenerator(AssemblyPath, new JsonSchemaGeneratorSettings {
                 DefaultEnumHandling = DefaultEnumHandling
             });
             if (SpecifyControllerName)
             {
                 return generator.GenerateForSingleController(ControllerName, UrlTemplate).ToJson();
             }
             else
             {
                 return generator.GenerateForAssemblyControllers(UrlTemplate).ToJson();
             }
         });
     }));
 }
Exemple #11
0
        public async Task <string> RunAsync()
        {
            var generator = new WebApiAssemblyToSwaggerGenerator(Settings);

            var controllerNames = ControllerNames.ToList();

            if (!string.IsNullOrEmpty(ControllerName))
            {
                controllerNames.Add(ControllerName);
            }

            controllerNames = controllerNames.Where(s => !string.IsNullOrWhiteSpace(s)).Distinct().ToList();
            if (!controllerNames.Any())
            {
                controllerNames = generator.GetControllerClasses().ToList();
            }

            var service = generator.GenerateForControllers(controllerNames);

            return(service.ToJson());
        }
        public async Task <SwaggerService> RunAsync()
        {
            return(await Task.Run(() =>
            {
                var generator = new WebApiAssemblyToSwaggerGenerator(Settings);

                var controllerNames = ControllerNames.ToList();
                if (!string.IsNullOrEmpty(ControllerName))
                {
                    controllerNames.Add(ControllerName);
                }

                controllerNames = controllerNames.Where(s => !string.IsNullOrWhiteSpace(s)).Distinct().ToList();
                if (!controllerNames.Any() && Settings.AssemblyPaths?.Length > 0)
                {
                    controllerNames = generator.GetControllerClasses().ToList();
                }

                return generator.GenerateForControllers(controllerNames);
            }));
        }
        private void GenerateWebApiSwagger(FilePath outputFile, SwaggerGeneratorSettings settings)
        {
            var genSettings = settings.JsonSettings as WebApiAssemblyToSwaggerGeneratorSettings ??
                              SettingsFactory.GetWebApiToSwaggerSettings();

            genSettings.AssemblyPaths               = new [] { Source.MakeAbsolute(Environment).FullPath };
            genSettings.DefaultUrlTemplate          = settings.DefaultUrlTemplate;
            genSettings.DefaultEnumHandling         = settings.EnumAsString ? EnumHandling.String : EnumHandling.Integer;
            genSettings.DefaultPropertyNameHandling = settings.CamelCaseProperties
                ? PropertyNameHandling.CamelCase
                : PropertyNameHandling.Default;
            genSettings.NullHandling   = NullHandling.Swagger;
            genSettings.ReferencePaths = settings.AssemblyPaths.Select(a => a.FullPath).ToArray();
            var gen     = new WebApiAssemblyToSwaggerGenerator(genSettings);
            var service = gen.GenerateForControllers(gen.GetControllerClasses());

            service.BasePath         = settings.BasePath ?? "";
            service.Info.Title       = settings.ApiTitle ?? "";
            service.Info.Description = settings.ApiDescription ?? "";
            using (var stream = new StreamWriter(FileSystem.GetFile(outputFile).OpenWrite()))
            {
                stream.WriteAsync(service.ToJson()).Wait();
            }
        }