Esempio n. 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;
            }));
        }
Esempio n. 2
0
        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
        }
Esempio n. 3
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());
        }
Esempio n. 4
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();
                }

                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();
            }
        }