File tree Expand file tree Collapse file tree 3 files changed +48
-1
lines changed
Microsoft.OpenApi.Readers/Services
Microsoft.OpenApi/Services Expand file tree Collapse file tree 3 files changed +48
-1
lines changed Original file line number Diff line number Diff line change @@ -89,6 +89,24 @@ public override void Visit(OpenApiResponses responses)
89
89
ResolveMap ( responses ) ;
90
90
}
91
91
92
+ /// <summary>
93
+ /// Resolve all references to SecuritySchemes
94
+ /// </summary>
95
+ /// <param name="securityRequirement"></param>
96
+ public override void Visit ( OpenApiSecurityRequirement securityRequirement )
97
+ {
98
+ foreach ( var scheme in securityRequirement . Keys . ToList ( ) )
99
+ {
100
+ ResolveObject ( scheme , ( resolvedScheme ) => {
101
+ // If scheme was unresolved
102
+ // copy Scopes and remove old unresolved scheme
103
+ var scopes = securityRequirement [ scheme ] ;
104
+ securityRequirement . Remove ( scheme ) ;
105
+ securityRequirement . Add ( resolvedScheme , scopes ) ;
106
+ } ) ;
107
+ }
108
+ }
109
+
92
110
/// <summary>
93
111
/// Resolve all references to links
94
112
/// </summary>
Original file line number Diff line number Diff line change @@ -279,6 +279,13 @@ public virtual void Visit(IList<OpenApiTag> openApiTags)
279
279
{
280
280
}
281
281
282
+ /// <summary>
283
+ /// Visits list of <see cref="OpenApiSecurityRequirement"/>
284
+ /// </summary>
285
+ public virtual void Visit ( IList < OpenApiSecurityRequirement > openApiSecurityRequirements )
286
+ {
287
+ }
288
+
282
289
/// <summary>
283
290
/// Visits <see cref="IOpenApiExtensible"/>
284
291
/// </summary>
Original file line number Diff line number Diff line change @@ -470,10 +470,32 @@ internal void Walk(OpenApiOperation operation)
470
470
Walk ( OpenApiConstants . Responses , ( ) => Walk ( operation . Responses ) ) ;
471
471
Walk ( OpenApiConstants . Callbacks , ( ) => Walk ( operation . Callbacks ) ) ;
472
472
Walk ( OpenApiConstants . Tags , ( ) => Walk ( operation . Tags ) ) ;
473
-
473
+ Walk ( OpenApiConstants . Security , ( ) => Walk ( operation . Security ) ) ;
474
474
Walk ( operation as IOpenApiExtensible ) ;
475
475
}
476
476
477
+ /// <summary>
478
+ /// Visits list of <see cref="OpenApiSecurityRequirement"/>
479
+ /// </summary>
480
+ internal void Walk ( IList < OpenApiSecurityRequirement > securityRequirements )
481
+ {
482
+ if ( securityRequirements == null )
483
+ {
484
+ return ;
485
+ }
486
+
487
+ _visitor . Visit ( securityRequirements ) ;
488
+
489
+ if ( securityRequirements != null )
490
+ {
491
+ for ( int i = 0 ; i < securityRequirements . Count ; i ++ )
492
+ {
493
+ Walk ( i . ToString ( ) , ( ) => Walk ( securityRequirements [ i ] ) ) ;
494
+ }
495
+ }
496
+ }
497
+
498
+
477
499
/// <summary>
478
500
/// Visits list of <see cref="OpenApiParameter"/>
479
501
/// </summary>
You can’t perform that action at this time.
0 commit comments