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")); }
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)")); }
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)")); }
/// <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); }