private static DefaultApiSpecification GetDefaultApiSpecification()

in tools/code/extractor/ApiSpecification.cs [20:68]


    private static DefaultApiSpecification GetDefaultApiSpecification(IServiceProvider provider)
    {
        var configuration = provider.GetRequiredService<IConfiguration>();

        var formatOption = configuration.TryGetValue("API_SPECIFICATION_FORMAT")
                            | configuration.TryGetValue("apiSpecificationFormat");

        var specification = formatOption.Map(format => format switch
        {
            var value when "Wadl".Equals(value, StringComparison.OrdinalIgnoreCase) => new ApiSpecification.Wadl() as ApiSpecification,
            var value when "JSON".Equals(value, StringComparison.OrdinalIgnoreCase) => new ApiSpecification.OpenApi
            {
                Format = new OpenApiFormat.Json(),
                Version = new OpenApiVersion.V3()
            },
            var value when "YAML".Equals(value, StringComparison.OrdinalIgnoreCase) => new ApiSpecification.OpenApi
            {
                Format = new OpenApiFormat.Yaml(),
                Version = new OpenApiVersion.V3()
            },
            var value when "OpenApiV2Json".Equals(value, StringComparison.OrdinalIgnoreCase) => new ApiSpecification.OpenApi
            {
                Format = new OpenApiFormat.Json(),
                Version = new OpenApiVersion.V2()
            },
            var value when "OpenApiV2Yaml".Equals(value, StringComparison.OrdinalIgnoreCase) => new ApiSpecification.OpenApi
            {
                Format = new OpenApiFormat.Yaml(),
                Version = new OpenApiVersion.V2()
            },
            var value when "OpenApiV3Json".Equals(value, StringComparison.OrdinalIgnoreCase) => new ApiSpecification.OpenApi
            {
                Format = new OpenApiFormat.Json(),
                Version = new OpenApiVersion.V3()
            },
            var value when "OpenApiV3Yaml".Equals(value, StringComparison.OrdinalIgnoreCase) => new ApiSpecification.OpenApi
            {
                Format = new OpenApiFormat.Yaml(),
                Version = new OpenApiVersion.V3()
            },
            var value => throw new NotSupportedException($"API specification format '{value}' defined in configuration is not supported.")
        }).IfNone(() => new ApiSpecification.OpenApi
        {
            Format = new OpenApiFormat.Yaml(),
            Version = new OpenApiVersion.V3()
        });

        return new DefaultApiSpecification(specification);
    }