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; })); }
public void When_controller_type_is_not_found_then_type_load_exception_is_thrown() { //// Arrange var settings = new WebApiAssemblyToSwaggerGeneratorSettings { AssemblyPaths = new[] { @"./NSwag.CodeGeneration.Tests.dll" }, DefaultUrlTemplate = "api/{controller}/{action}/{id}" }; var generator = new WebApiAssemblyToSwaggerGenerator(settings); //// Act var document = generator.GenerateForControllers(new[] { "NonExistingClass" }); // Should throw exception //// Assert }
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(); } }