Files
REST_SERVER/VERAG_REST_SERVER/App_Start/SwaggerConfig.vb
2023-02-27 09:12:32 +01:00

86 lines
7.0 KiB
VB.net

Imports System.Net.Http
Imports System.Web.Http
Imports System.Web.Http.Description
Imports Microsoft.Extensions.Options
Imports Swashbuckle.Application
Imports Swashbuckle.Swagger
Imports Swashbuckle.SwaggerUi
'<Assembly: PreApplicationStartMethod(GetType(SwaggerConfig), "Register")>
Public Class SwaggerConfig
Private Shared descr As String = "VERAG API"
Public Shared Sub Register(ByVal config As HttpConfiguration)
Dim thisAssembly = GetType(SwaggerConfig).Assembly
GlobalConfiguration.Configuration.EnableSwagger(Function(c)
'c.SingleApiVersion("v1", descr)
c.PrettyPrint()
c.MultipleApiVersions(Function(apiDesc, targetApiVersion) ResolveVersionSupportByRouteConstraint(apiDesc, targetApiVersion), Function(vc)
vc.Version("v1", descr & " V1").Description("A sample API for testing ").TermsOfService("Some Terms").Contact(Function(cont)
cont.Name("VERAG AG")
cont.Url("http://test.at")
cont.Email("Mail.test")
End Function).License(Function(lic)
lic.Name("Lizenz")
lic.Url("http://test.at")
End Function)
vc.Version("v2", descr & " V2")
vc.Version("v3", descr & " V3")
End Function)
' c.OAuth2("oauth2").Description("OAuth2 Implicit Grant").Flow("implicit").AuthorizationUrl("http://petstore.swagger.wordnik.com/api/oauth/dialog").Scopes(Function(scopes)
'End Function)
c.BasicAuth("basic").Description("Basic HTTP Authentication")
'c.ApiKey("apiKey").Description("API Key Authentication").Name("apiKey").In("header")
'c.OperationFilter(Of AddAuthorizationHeaderParameterOperationFilter)()
'c.OperationFilter(Of BasicAuthenticationAttribute)()
'c.IncludeXmlComments($"{AppDomain.CurrentDomain.BaseDirectory}\bin\MyApi.XML")
'c.RootUrl(Function(req) req.GetRouteData)
End Function).EnableSwaggerUi(Function(c)
c.DocumentTitle(descr)
c.EnableDiscoveryUrlSelector()
c.DocExpansion(DocExpansion.Full)
'c.EnableApiKeySupport("apiKey", "header")
'c.CustomAsset("index", yourAssembly, "YourWebApiProject.SwaggerExtensions.index.html")
'c.EnableOAuth2Support(clientId:="test-client-id", clientSecret:=Nothing, realm:="test-realm", appName:="Swagger UI")
'additionalQueryStringParams:=New Dictionary(Of String, String)() From {
' {"foo", "bar"}
'})
End Function)
End Sub
Public Shared Function ResolveVersionSupportByRouteConstraint(ByVal apiDesc As ApiDescription, ByVal targetApiVersion As String) As Boolean
Return apiDesc.ID.Contains($"/{targetApiVersion}/")
'Return apiDesc.ActionDescriptor.ControllerDescriptor.ControllerType.FullName.Contains($"{targetApiVersion}")
End Function
End Class