51 lines
1.5 KiB
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: '请确保安全方案名称有效',
|
|
),
|
|
);
|
|
}
|
|
}
|
|
}
|
|
}
|