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