1+ using Microsoft . AspNetCore . OpenApi ;
2+ using Microsoft . OpenApi ;
3+
4+ namespace OpenShock . Common . OpenAPI ;
5+
6+ public static class DocumentDefaults
7+ {
8+ public static Func < OpenApiDocument , OpenApiDocumentTransformerContext , CancellationToken , Task > GetDocumentTransformer ( string version )
9+ {
10+ return ( document , context , _ ) =>
11+ {
12+ var env = context . ApplicationServices . GetRequiredService < IHostEnvironment > ( ) ;
13+
14+ document . Info = new OpenApiInfo
15+ {
16+ Title = "OpenShock API" ,
17+ // Summary = ...
18+ // Description = ...
19+ Version = version ,
20+ // TermsOfService = ...
21+ // Contact = ...
22+ // License = ...
23+ } ;
24+
25+ document . Servers =
26+ [
27+ new OpenApiServer { Url = "https://api.openshock.app" } ,
28+ new OpenApiServer { Url = "https://api.openshock.dev" }
29+ ] ;
30+ if ( env . IsDevelopment ( ) )
31+ {
32+ document . Servers . Add ( new OpenApiServer { Url = "https://localhost" } ) ;
33+ }
34+
35+ document . Components ??= new OpenApiComponents ( ) ;
36+ document . Components . SecuritySchemes = new Dictionary < string , IOpenApiSecurityScheme >
37+ {
38+ {
39+ "ApiToken" ,
40+ new OpenApiSecurityScheme
41+ {
42+ Name = "OpenShockToken" ,
43+ Description = "Enter API Token" ,
44+ Type = SecuritySchemeType . ApiKey ,
45+ In = ParameterLocation . Header
46+ }
47+ } ,
48+ {
49+ "HubToken" ,
50+ new OpenApiSecurityScheme
51+ {
52+ Name = "DeviceToken" ,
53+ Description = "Enter hub token" ,
54+ Type = SecuritySchemeType . ApiKey ,
55+ In = ParameterLocation . Header
56+ }
57+ } ,
58+ {
59+ "UserSessionCookie" ,
60+ new OpenApiSecurityScheme
61+ {
62+ Name = "openShockSession" ,
63+ Description = "Enter user session cookie" ,
64+ Type = SecuritySchemeType . ApiKey ,
65+ In = ParameterLocation . Cookie
66+ }
67+ }
68+ } ;
69+
70+ return Task . CompletedTask ;
71+ } ;
72+ }
73+ }
0 commit comments