public void NoOperationsToParseShouldReturnEmptyDocument(string openApiDocumentVersion) { var path = Path.Combine(InputDirectory, "AnnotationNoOperationsToParse.xml"); var document = XDocument.Load(path); var input = new OpenApiGeneratorConfig( new List <XDocument>() { document }, new List <string>(), openApiDocumentVersion, FilterSetVersion.V1); GenerationDiagnostic result; var generator = new OpenApiGenerator(); var openApiDocument = generator.GenerateDocument(input, out result); result.Should().NotBeNull(); openApiDocument.Should().BeNull(); result.DocumentGenerationDiagnostic.Should() .BeEquivalentTo( new DocumentGenerationDiagnostic { Errors = { new GenerationError { Message = SpecificationGenerationMessages.NoOperationElementFoundToParse, } } } ); }
public static IActionResult Run( [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = "openapi")] HttpRequestMessage req, ILogger log) { log.LogInformation("C# HTTP trigger function processed a request."); var httpClient = new HttpClient() { BaseAddress = new Uri("https://raw.githubusercontent.com/OAI/OpenAPI-Specification/") }; //var openApiDocument = GenerateOpenApiDocument(); var openApiInfo = new OpenApiInfo() { Title = "ComplexOpenApiExample", Description = "A complex open api example", Version = "1.0.0", }; var restEndpoints = new List <RestEndpoint>() { new RestEndpoint() { Path = "/FetchOrders", InputOperations = new List <InputOperation>() { new InputOperation() { OperationType = OperationType.Get, Description = "Get an order", ResponseValues = new List <ResponseValue>() { new ResponseValue() { Name = "200", Description = "A good response", MediaType = "application/json", ResponseModelType = typeof(Order), StatusCode = HttpStatusCode.OK, } } } }, InputParameters = new List <InputParameter>() { new InputParameter() { Name = "QueryString", Description = "A querystring", ParameterLocation = ParameterLocation.Query, } }, }, }; var responseValues = restEndpoints.SelectMany(re => re.InputOperations) .SelectMany(io => io.ResponseValues); var types = responseValues .Select(rv => rv.ResponseModelType); var openApiGenerator = new OpenApiGenerator(); var openApiDocument = openApiGenerator.GenerateDocument(openApiInfo, restEndpoints, responseValues, types); var openApiString = openApiDocument.Serialize(OpenApiSpecVersion.OpenApi3_0, OpenApiFormat.Json); return(new OkObjectResult(openApiString)); }