public async Task <string> RunAsync()
 {
     return(await Task.Run(() =>
     {
         var clientGenerator = new SwaggerToCSharpWebApiControllerGenerator(InputSwaggerService, Settings);
         return clientGenerator.GenerateFile();
     }));
 }
 public async Task <string> RunAsync()
 {
     return(await Task.Run(async() =>
     {
         var document = await GetInputSwaggerDocument().ConfigureAwait(false);
         var clientGenerator = new SwaggerToCSharpWebApiControllerGenerator(document, Settings);
         return clientGenerator.GenerateFile();
     }));
 }
        public async Task When_usecancellationtokenparameter_notsetted_then_cancellationtoken_isnot_added()
        {
            //// Arrange
            var swaggerGen = new WebApiToSwaggerGenerator(new WebApiToSwaggerGeneratorSettings());
            var document   = await swaggerGen.GenerateForControllerAsync <TestController>();

            //// Act
            var codeGen = new SwaggerToCSharpWebApiControllerGenerator(document, new SwaggerToCSharpWebApiControllerGeneratorSettings
            {
                ControllerStyle = CSharpControllerStyle.Abstract
            });
            var code = codeGen.GenerateFile();

            //// Assert
            Assert.IsFalse(code.Contains("System.Threading.CancellationToken cancellationToken"));
        }
Example #4
0
        public async Task When_success_responses_are_wrapped_then_SwaggerResponse_is_returned_web_api()
        {
            //// Arrange
            var swaggerGen = new WebApiToSwaggerGenerator(new WebApiToSwaggerGeneratorSettings());
            var document   = await swaggerGen.GenerateForControllerAsync <TestController>();

            //// Act
            var codeGen = new SwaggerToCSharpWebApiControllerGenerator(document, new SwaggerToCSharpWebApiControllerGeneratorSettings
            {
                WrapResponses = true
            });
            var code = codeGen.GenerateFile();

            //// Assert
            Assert.IsTrue(code.Contains("Task<SwaggerResponse<string>>"));
            Assert.IsTrue(code.Contains("Task<SwaggerResponse>"));
        }
        public async Task When_controllerstyleisabstract_and_usecancellationtokenistrue_and_requesthasparameter_then_cancellationtoken_is_added()
        {
            //// Arrange
            var swaggerGen = new WebApiToSwaggerGenerator(new WebApiToSwaggerGeneratorSettings());
            var document   = await swaggerGen.GenerateForControllerAsync <TestController>();

            //// Act
            var codeGen = new SwaggerToCSharpWebApiControllerGenerator(document, new SwaggerToCSharpWebApiControllerGeneratorSettings
            {
                ControllerStyle      = CSharpControllerStyle.Abstract,
                UseCancellationToken = true
            });
            var code = codeGen.GenerateFile();

            //// Assert
            Assert.IsTrue(code.Contains("System.Threading.Tasks.Task<string> Foo(string test, bool test2, System.Threading.CancellationToken cancellationToken)"));
        }
Example #6
0
        public async Task When_controllergenerationformat_notsetted_then_partialcontroller_is_generated()
        {
            //// Arrange
            var swaggerGen = new WebApiToSwaggerGenerator(new WebApiToSwaggerGeneratorSettings());
            var document   = await swaggerGen.GenerateForControllerAsync <TestController>();

            //// Act
            var codeGen = new SwaggerToCSharpWebApiControllerGenerator(document, new SwaggerToCSharpWebApiControllerGeneratorSettings
            {
            });
            var code = codeGen.GenerateFile();

            //// Assert
            Assert.IsTrue(code.Contains("partial class TestController"));
            Assert.IsTrue(code.Contains("ITestController"));
            Assert.IsTrue(code.Contains("private ITestController _implementation;"));
            Assert.IsFalse(code.Contains("abstract class TestController"));
        }
        public async Task When_controllerstyleispartial_and_usecancellationtokenistrue_and_requesthasnoparameter_then_cancellationtoken_is_added()
        {
            //// Arrange
            var swaggerGen = new WebApiToSwaggerGenerator(new WebApiToSwaggerGeneratorSettings());
            var document   = await swaggerGen.GenerateForControllerAsync <TestController>();

            //// Act
            var codeGen = new SwaggerToCSharpWebApiControllerGenerator(document, new SwaggerToCSharpWebApiControllerGeneratorSettings
            {
                UseCancellationToken = true
            });
            var code = codeGen.GenerateFile();

            //// Assert
            Assert.IsTrue(code.Contains("(System.Threading.CancellationToken cancellationToken)"));
            Assert.IsTrue(code.Contains("_implementation.BarAsync(cancellationToken)"));
            Assert.IsTrue(code.Contains("System.Threading.Tasks.Task BarAsync(System.Threading.CancellationToken cancellationToken)"));
        }
Example #8
0
        /// <summary>
        ///     Generates a Web API controller class at the given path with the specified settings
        /// </summary>
        /// <param name="outputFile">File path for the generated client code</param>
        /// <param name="classPath">The fully qualified class name (including namespace) for the client</param>
        /// <param name="configure">Optional settings to further control the code generation process</param>
        /// <returns>The metadata source</returns>
        /// <example>
        ///     <code><![CDATA[
        /// NSwag
        /// .FromSwaggerSpecification("./swagger.json")
        /// .ToWebApiController("./controller.cs", "Generated.Api.ValuesController")
        /// ]]></code>
        /// </example>
        public SwaggerSource ToWebApiController(FilePath outputFile, string classPath,
                                                Action <CSharpGeneratorSettings> configure = null)
        {
            var settings = new CSharpGeneratorSettings();

            configure?.Invoke(settings);
            var @class      = classPath.SplitClassPath();
            var genSettings = settings.ClientSettings as SwaggerToCSharpWebApiControllerGeneratorSettings ??
                              SettingsFactory.GetSwaggerToControllerSettings();

            genSettings.ClassName = @class.Value;
            genSettings.CSharpGeneratorSettings.Namespace = @class.Key;
            genSettings.AdditionalNamespaceUsages         = settings.Namespaces.ToArray();
            genSettings.ControllerBaseClass      = settings.BaseClass;
            genSettings.GenerateClientClasses    = true;
            genSettings.GenerateClientInterfaces = settings.GenerateInterfaces;
            var gen =
                new SwaggerToCSharpWebApiControllerGenerator(
                    Swag.SwaggerService.FromJson(FileSystem.ReadContent(Source)), genSettings);
            var api = gen.GenerateFile();

            FileSystem.WriteContent(outputFile, api);
            return(this);
        }