import 'package:swagger_generator_flutter/core/models.dart'; import 'package:swagger_generator_flutter/validators/core/validation_context.dart'; import 'package:swagger_generator_flutter/validators/core/validation_result.dart'; import 'package:swagger_generator_flutter/validators/core/validation_rule.dart'; /// 安全要求验证规则 class SecurityValidationRule extends ValidationRule { @override String get id => 'security_validation'; @override String get name => '安全要求验证'; @override ValidationResult validate(ValidationContext context) { final security = context.document.security; final errors = []; final warnings = []; for (var i = 0; i < security.length; i++) { _validateSecurityRequirement(security[i], 'security[$i]', warnings); } return ValidationResult( isValid: errors.isEmpty, errors: errors, warnings: warnings, ); } void _validateSecurityRequirement( ApiSecurityRequirement requirement, String path, List warnings, ) { for (final schemeName in requirement.schemeNames) { // 这里应该验证安全方案是否在 components.securitySchemes 中定义 // 但由于当前模型结构限制,我们只能添加警告 if (schemeName.isEmpty) { warnings.add( ValidationWarning( path: path, message: '安全方案名称为空', suggestion: '请确保安全方案名称有效', ), ); } } } }