/// <summary>Generates the Swagger definition for all controllers in the assembly.</summary> /// <param name="controllerClassNames">The controller class names.</param> /// <exception cref="InvalidOperationException">No assembly paths have been provided.</exception> /// <returns>The Swagger definition.</returns> public override SwaggerDocument GenerateForControllers(IEnumerable <string> controllerClassNames) { var loader = new WebApiAssemblyLoader(); var data = loader.GenerateForControllers(controllerClassNames, JsonConvert.SerializeObject(Settings)); return(SwaggerDocument.FromJson(data)); }
/// <summary>Generates the Swagger definition for the given classes without operations (used for class generation).</summary> /// <param name="classNames">The class names.</param> /// <returns>The Swagger definition.</returns> public override SwaggerDocument Generate(string[] classNames) { var loader = new NetAssemblyLoader(); var data = loader.FromAssemblyType(classNames, JsonConvert.SerializeObject(Settings)); return(SwaggerDocument.FromJson(data)); }
/// <summary></summary> public async Task <SwaggerDocument> RunAsync() { if (!string.IsNullOrEmpty(Swagger)) { return(await Task.Run(() => SwaggerDocument.FromJson(Swagger))); } else { return(await Task.Run(() => SwaggerDocument.FromUrl(Url))); } }
/// <summary>Generates the Swagger definition for the given classes without operations (used for class generation).</summary> /// <param name="classNames">The class names.</param> /// <returns>The Swagger definition.</returns> public override SwaggerDocument Generate(string[] classNames) { #if FullNet using (var isolated = new AppDomainIsolation <NetAssemblyLoader>(Path.GetDirectoryName(Path.GetFullPath(Settings.AssemblyPath)), Settings.AssemblyConfig)) return(SwaggerDocument.FromJson(isolated.Object.FromAssemblyType(classNames, JsonConvert.SerializeObject(Settings)))); #else var loader = new NetAssemblyLoader(); var data = loader.FromAssemblyType(classNames, JsonConvert.SerializeObject(Settings)); return(SwaggerDocument.FromJson(data)); #endif }
public void ExtensionDataTest() { //// Arrange var json = _jsonVendorExtensionData; //// Act var document = SwaggerDocument.FromJson(json); //// Assert Assert.IsNotNull(document.Operations.First().Operation.Responses["202"].ExtensionData); }
public void WhenGeneratingOperationIdsThenMissingIdsAreGenerated() { //// Arrange var json = _sampleServiceCode; //// Act var document = SwaggerDocument.FromJson(json); document.GenerateOperationIds(); //// Assert Assert.AreEqual("pets", document.Operations.First().Operation.OperationId); }
/// <summary>Generates the Swagger definition for all controllers in the assembly.</summary> /// <param name="controllerClassNames">The controller class names.</param> /// <exception cref="InvalidOperationException">No assembly paths have been provided.</exception> /// <returns>The Swagger definition.</returns> public override SwaggerDocument GenerateForControllers(IEnumerable <string> controllerClassNames) { #if FullNet using (var isolated = new AppDomainIsolation <WebApiAssemblyLoader>(Path.GetDirectoryName(Path.GetFullPath(Settings.AssemblyPaths.First())), Settings.AssemblyConfig)) { var document = isolated.Object.GenerateForControllers(controllerClassNames, JsonConvert.SerializeObject(Settings)); return(SwaggerDocument.FromJson(document)); } #else var loader = new WebApiAssemblyLoader(); var data = loader.GenerateForControllers(controllerClassNames, JsonConvert.SerializeObject(Settings)); return(SwaggerDocument.FromJson(data)); #endif }
public void WhenConvertingAndBackThenItShouldBeTheSame() { //// Arrange var json = _sampleServiceCode; //// Act var document = SwaggerDocument.FromJson(json); var json2 = document.ToJson(); var reference = document.Paths["/pets"][SwaggerOperationMethod.Get].Responses["200"].Schema.Item.SchemaReference; //// Assert Assert.IsNotNull(json2); Assert.IsNotNull(reference); Assert.AreEqual(3, reference.Properties.Count); }
public void When_webapi2swagger_is_called_then_file_is_created() { //// Arrange var command = "webapi2swagger " + "/assembly:" + Path.GetFullPath("../../../NSwag.Demo.Web/bin/NSwag.Demo.Web.dll") + " " + "/controller:NSwag.Demo.Web.Controllers.PersonsController " + "/defaultUrlTemplate:api/{controller}/{action}/{id} " + "/output:" + OutputFile; //// Act var output = RunCommandLine(command); var document = SwaggerDocument.FromJson(output); //// Assert Assert.IsNotNull(document); }
public Task GenerateClientAsync(string swaggerData, string documentPath) { return(RunTaskAsync(async() => { var code = string.Empty; await Task.Run(async() => { if (!string.IsNullOrEmpty(swaggerData)) { Command.Input = SwaggerDocument.FromJson(swaggerData, documentPath); code = await Command.RunAsync(); Command.Input = null; } }); ClientCode = code ?? string.Empty; })); }
public Task GenerateClientAsync(string swaggerData, string documentPath) { return(RunTaskAsync(async() => { Dictionary <string, string> result = null; await Task.Run(async() => { if (!string.IsNullOrEmpty(swaggerData)) { Command.Input = SwaggerDocument.FromJson(swaggerData, documentPath); result = await Command.RunAsync(); Command.Input = null; } }); ClientCode = result != null ? string.Join("\n\n", result.Values) : string.Empty; })); }
private SwaggerDocument CreateDocument(WebApiToSwaggerGeneratorSettings settings) { var document = !string.IsNullOrEmpty(settings.DocumentTemplate) ? SwaggerDocument.FromJson(settings.DocumentTemplate) : new SwaggerDocument(); document.Consumes = new List <string> { "application/json" }; document.Produces = new List <string> { "application/json" }; document.Info = new SwaggerInfo { Title = settings.Title, Description = settings.Description, Version = settings.Version }; return(document); }
public void When_parameter_is_array_then_CSharp_is_correct() { //// Arrange var swagger = @"{ ""swagger"" : ""2.0"", ""info"" : { ""version"" : ""1.0.2"", ""title"" : ""Test API"" }, ""host"" : ""localhost:8080"", ""basePath"" : ""/"", ""tags"" : [ { ""name"" : ""api"" } ], ""schemes"" : [ ""http"" ], ""paths"" : { ""/removeElement"" : { ""delete"" : { ""tags"" : [ ""api"" ], ""summary"" : ""Removes elements"", ""description"" : ""Removes elements"", ""operationId"" : ""removeElement"", ""consumes"" : [ ""application/json"" ], ""produces"" : [ ""application/json"" ], ""parameters"" : [ { ""name"" : ""X-User"", ""in"" : ""header"", ""description"" : ""User identifier"", ""required"" : true, ""type"" : ""string"" }, { ""name"" : ""elementId"", ""in"" : ""query"", ""description"" : ""The ids of existing elements that should be removed"", ""required"" : false, ""type"" : ""array"", ""items"" : { ""type"" : ""integer"", ""format"" : ""int64"" }, } ], ""responses"" : { ""default"" : { ""description"" : ""successful operation"" } } } } }, ""definitions"" : { } } "; var document = SwaggerDocument.FromJson(swagger); //// Act var settings = new SwaggerToCSharpClientGeneratorSettings { ClassName = "MyClass" }; var generator = new SwaggerToCSharpClientGenerator(document, settings); var code = generator.GenerateFile(); //// Assert Assert.IsTrue( code.Contains( @"foreach(var item_ in elementId) { url_ += string.Format(""elementId={0}&"", Uri.EscapeDataString(item_.ToString())); }")); }
public async Task GenerateClientAsync(string swaggerData, string documentPath) { var code = !string.IsNullOrEmpty(swaggerData) ? await RunTaskAsync(() => SwaggerDocument.FromJson(swaggerData, documentPath)?.ToJson()) : string.Empty; SwaggerCode = code ?? string.Empty; }