swagger_generator_flutter/lib/validators/rules/security_rules.dart

51 lines
1.5 KiB
Dart

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 = <ValidationError>[];
final warnings = <ValidationWarning>[];
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<ValidationWarning> warnings,
) {
for (final schemeName in requirement.schemeNames) {
// 这里应该验证安全方案是否在 components.securitySchemes 中定义
// 但由于当前模型结构限制,我们只能添加警告
if (schemeName.isEmpty) {
warnings.add(
ValidationWarning(
path: path,
message: '安全方案名称为空',
suggestion: '请确保安全方案名称有效',
),
);
}
}
}
}