swagger_generator_flutter/lib/validators/schema_validator.dart

55 lines
1.9 KiB
Dart

/// Schema 验证器
/// 验证 OpenAPI 3.0 文档的完整性和正确性
library;
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';
import 'package:swagger_generator_flutter/validators/rules/component_rules.dart';
import 'package:swagger_generator_flutter/validators/rules/info_rules.dart';
import 'package:swagger_generator_flutter/validators/rules/path_rules.dart';
import 'package:swagger_generator_flutter/validators/rules/security_rules.dart';
import 'package:swagger_generator_flutter/validators/rules/server_rules.dart';
import 'package:swagger_generator_flutter/validators/rules/structure_rules.dart';
export 'package:swagger_generator_flutter/validators/core/validation_context.dart';
export 'package:swagger_generator_flutter/validators/core/validation_result.dart';
export 'package:swagger_generator_flutter/validators/core/validation_rule.dart';
/// Schema 验证器
class SchemaValidator {
SchemaValidator({
List<ValidationRule>? rules,
}) : _rules = rules ?? _defaultRules;
final List<ValidationRule> _rules;
static final List<ValidationRule> _defaultRules = [
InfoValidationRule(),
ServerValidationRule(),
PathValidationRule(),
ComponentValidationRule(),
SecurityValidationRule(),
StructureValidationRule(),
];
/// 验证 OpenAPI 文档
ValidationResult validateDocument(
SwaggerDocument document, {
ValidationOptions options = const ValidationOptions(),
}) {
final context = ValidationContext(
document: document,
options: options,
);
final results = <ValidationResult>[];
for (final rule in _rules) {
results.add(rule.validate(context));
}
return results.merge();
}
}