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[] { } }; })); }
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; })); }
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); }
private Task LoadAssembly() { return(RunTaskAsync(async() => { AllControllerNames = await Task.Run(() => { var generator = new WebApiAssemblyToSwaggerGenerator(AssemblyPath); return generator.GetControllerClasses(); }); ControllerName = AllControllerNames.FirstOrDefault(); })); }
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> 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(); } }