22
33import com .retailsvc .http .spec .schema .Schema ;
44import com .retailsvc .http .spec .schema .SchemaParser ;
5+ import com .retailsvc .http .spec .security .SecurityRequirement ;
6+ import com .retailsvc .http .spec .security .SecurityScheme ;
7+ import com .retailsvc .http .spec .security .SecuritySchemeParser ;
58import java .io .IOException ;
69import java .io .UncheckedIOException ;
710import java .lang .reflect .Method ;
@@ -25,7 +28,9 @@ public record Spec(
2528 String basePath ,
2629 Map <String , Schema > schemaRefIndex ,
2730 Map <String , Parameter > parameterRefIndex ,
28- Map <String , Object > extensions ) {
31+ Map <String , Object > extensions ,
32+ Map <String , SecurityScheme > securitySchemes ,
33+ List <SecurityRequirement > security ) {
2934
3035 private static final String SCHEMA_KEY = "schema" ;
3136 private static final String SCHEMA_REF_PREFIX = "#/components/schemas/" ;
@@ -138,6 +143,15 @@ public static Spec from(Map<String, Object> raw) {
138143 List <Operation > operations =
139144 parseOperations (
140145 (Map <String , Object >) raw .getOrDefault ("paths" , Map .of ()), componentParameters );
146+ Map <String , Object > rawSchemes =
147+ (Map <String , Object >) rawComponents .getOrDefault ("securitySchemes" , Map .of ());
148+ Map <String , SecurityScheme > securitySchemes = new LinkedHashMap <>();
149+ for (var entry : rawSchemes .entrySet ()) {
150+ securitySchemes .put (
151+ entry .getKey (), SecuritySchemeParser .parse ((Map <String , Object >) entry .getValue ()));
152+ }
153+ List <SecurityRequirement > rootSecurity =
154+ SecuritySchemeParser .parseRequirements ((List <Object >) raw .get ("security" ));
141155 return new Spec (
142156 openapi ,
143157 info ,
@@ -148,7 +162,9 @@ public static Spec from(Map<String, Object> raw) {
148162 computeBasePath (servers ),
149163 indexByRef (componentSchemas , SCHEMA_REF_PREFIX ),
150164 indexByRef (componentParameters , PARAMETER_REF_PREFIX ),
151- extractExtensions (raw ));
165+ extractExtensions (raw ),
166+ Map .copyOf (securitySchemes ),
167+ rootSecurity );
152168 }
153169
154170 private static String computeBasePath (List <Server > servers ) {
0 commit comments