55 lines
1.9 KiB
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();
|
|
}
|
|
}
|