@@ -9,6 +9,16 @@ import '../interaction_affordances/event.dart';
99import '../interaction_affordances/interaction_affordance.dart' ;
1010import '../interaction_affordances/property.dart' ;
1111import '../link.dart' ;
12+ import '../security/ace_security_scheme.dart' ;
13+ import '../security/apikey_security_scheme.dart' ;
14+ import '../security/auto_security_scheme.dart' ;
15+ import '../security/basic_security_scheme.dart' ;
16+ import '../security/bearer_security_scheme.dart' ;
17+ import '../security/combo_security_scheme.dart' ;
18+ import '../security/digest_security_scheme.dart' ;
19+ import '../security/no_security_scheme.dart' ;
20+ import '../security/oauth2_security_scheme.dart' ;
21+ import '../security/psk_security_scheme.dart' ;
1222import '../security/security_scheme.dart' ;
1323import '../thing_description.dart' ;
1424import '../validation/validation_exception.dart' ;
@@ -312,7 +322,7 @@ extension ParseField on Map<String, dynamic> {
312322 /// defined.
313323 Map <String , SecurityScheme >? parseSecurityDefinitions (
314324 PrefixMapping prefixMapping,
315- Set <String >? parsedFields,
325+ Set <String > parsedFields,
316326 ) {
317327 final fieldValue =
318328 parseMapField <dynamic >('securityDefinitions' , parsedFields);
@@ -326,7 +336,7 @@ extension ParseField on Map<String, dynamic> {
326336 for (final securityDefinition in fieldValue.entries) {
327337 final dynamic value = securityDefinition.value;
328338 if (value is Map <String , dynamic >) {
329- final securityScheme = SecurityScheme . fromJson (value, prefixMapping );
339+ final securityScheme = value. _parseSecurityScheme (prefixMapping, {} );
330340 if (securityScheme != null ) {
331341 result[securityDefinition.key] = securityScheme;
332342 }
@@ -336,6 +346,38 @@ extension ParseField on Map<String, dynamic> {
336346 return result;
337347 }
338348
349+ SecurityScheme ? _parseSecurityScheme (
350+ PrefixMapping prefixMapping,
351+ Set <String > parsedFields,
352+ ) {
353+ final scheme = parseRequiredField ('scheme' , parsedFields);
354+
355+ switch (scheme) {
356+ case 'auto' :
357+ return AutoSecurityScheme .fromJson (this , prefixMapping, parsedFields);
358+ case 'basic' :
359+ return BasicSecurityScheme .fromJson (this , prefixMapping, parsedFields);
360+ case 'bearer' :
361+ return BearerSecurityScheme .fromJson (this , prefixMapping, parsedFields);
362+ case 'combo' :
363+ return ComboSecurityScheme .fromJson (this , prefixMapping, parsedFields);
364+ case 'nosec' :
365+ return NoSecurityScheme .fromJson (this , prefixMapping, parsedFields);
366+ case 'psk' :
367+ return PskSecurityScheme .fromJson (this , prefixMapping, parsedFields);
368+ case 'digest' :
369+ return DigestSecurityScheme .fromJson (this , prefixMapping, parsedFields);
370+ case 'apikey' :
371+ return ApiKeySecurityScheme .fromJson (this , prefixMapping, parsedFields);
372+ case 'oauth2' :
373+ return OAuth2SecurityScheme .fromJson (this , prefixMapping, parsedFields);
374+ case 'ace:ACESecurityScheme' :
375+ return AceSecurityScheme .fromJson (this , prefixMapping, parsedFields);
376+ }
377+
378+ return null ;
379+ }
380+
339381 /// Parses [Property] s contained in this JSON object.
340382 ///
341383 /// Adds the key `properties` to the set of [parsedFields] , if defined.
0 commit comments