summaryrefslogtreecommitdiff
path: root/Program.cs
blob: 2c1a906042547743ff4112a7d64b89e0ca6096b2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
using Microsoft.Azure.Functions.Worker.Extensions.OpenApi.Extensions;
using Microsoft.Azure.WebJobs.Extensions.OpenApi.Core.Abstractions;
using Microsoft.Azure.WebJobs.Extensions.OpenApi.Core.Configurations;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.OpenApi.Models;
using System.Net;

namespace TestNSwagFunction
{
    public class Program
    {
        public static void Main()
        {
            var host = new HostBuilder()
                .ConfigureFunctionsWorkerDefaults(
                    builder =>
                    {
                        builder.UseMiddleware<ExceptionLoggingMiddleware>();
                        builder.UseNewtonsoftJson();
                    })
                    .ConfigureServices(services =>
                    {
                        services = ConfigureOpenApiOptions(services);
                    })
                .Build();

            host.Run();
        }

        private static IServiceCollection ConfigureOpenApiOptions(IServiceCollection serviceCollection)
        {
            return serviceCollection.AddSingleton<IOpenApiConfigurationOptions>(_ =>
             {
                 var options = new OpenApiConfigurationOptions()
                 {
                     Info = new OpenApiInfo()
                     {
                         Version = DefaultOpenApiConfigurationOptions.GetOpenApiDocVersion(),
                         Title = $"{DefaultOpenApiConfigurationOptions.GetOpenApiDocTitle()} (Injected)",
                         Description = DefaultOpenApiConfigurationOptions.GetOpenApiDocDescription(),
                         TermsOfService = new Uri("https://github.com/Azure/azure-functions-openapi-extension"),
                         Contact = new OpenApiContact()
                         {
                             Name = "Test",
                             Email = "test@localhost",
                             Url = new Uri("https://localhost"),
                         },
                         License = new OpenApiLicense()
                         {
                             Name = "MIT",
                             Url = new Uri("http://opensource.org/licenses/MIT"),
                         }
                     },
                     Servers = DefaultOpenApiConfigurationOptions.GetHostNames(),
                     OpenApiVersion = DefaultOpenApiConfigurationOptions.GetOpenApiVersion(),
                     IncludeRequestingHostName = DefaultOpenApiConfigurationOptions.IsFunctionsRuntimeEnvironmentDevelopment(),
                     ForceHttps = DefaultOpenApiConfigurationOptions.IsHttpsForced(),
                     ForceHttp = DefaultOpenApiConfigurationOptions.IsHttpForced(),
                 };

                 return options;
             })
            .AddSingleton<IOpenApiHttpTriggerAuthorization>(_ =>
            {
                var auth = new OpenApiHttpTriggerAuthorization(req =>
                {
                    var result = new OpenApiAuthorizationResult()
                    {
                        StatusCode = HttpStatusCode.NotFound,
                        ContentType = "text/plain",
                        Payload = string.Empty,
                    };

                    if (DefaultOpenApiConfigurationOptions.IsFunctionsRuntimeEnvironmentDevelopment())
                    {
                        return Task.FromResult(default(OpenApiAuthorizationResult));
                    }

                    return Task.FromResult(result);
                });

                return auth;
            });
        }
    }
}