Skip to content

Commit 5749a37

Browse files
t0mmy742scaytrase
authored andcommitted
Support Respect/Validation v2
1 parent 8481aac commit 5749a37

22 files changed

+72
-29
lines changed

composer.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
"psr/cache": "^1.0",
3030
"psr/http-message": "^1.0",
3131
"psr/http-server-middleware": "^1.0",
32-
"respect/validation": "^1.1.3",
32+
"respect/validation": "^1.1.3 || ^2.0",
3333
"riverline/multipart-parser": "^2.0.3",
3434
"webmozart/assert": "^1.4"
3535
},
@@ -40,7 +40,7 @@
4040
"phpstan/phpstan": "^0.12.59",
4141
"phpstan/phpstan-phpunit": "^0.12.16",
4242
"phpstan/phpstan-webmozart-assert": "^0.12.7",
43-
"phpunit/phpunit": "^7|^8|^9",
43+
"phpunit/phpunit": "^7 || ^8 || ^9",
4444
"symfony/cache": "^5.1"
4545
},
4646
"config": {

phpstan.neon

+3-1
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,6 @@ parameters:
88
treatPhpDocTypesAsCertain: false
99
ignoreErrors:
1010
- '#Unsafe usage of new static\(\)\.#'
11-
- '#Method [a-zA-Z0-9_\\]+::[a-zA-Z0-9_]+\(\) should return cebe\\openapi\\spec\\OpenApi but returns cebe\\openapi\\SpecObjectInterface\.#'
11+
- '#Method [a-zA-Z0-9_\\]+::[a-zA-Z0-9_]+\(\) should return cebe\\openapi\\spec\\OpenApi but returns cebe\\openapi\\SpecObjectInterface\.#'
12+
- '#Caught class Respect\\Validation\\Exceptions\\ExceptionInterface not found.#'
13+
- '#Call to an undefined static method Respect\\Validation\\Validator::numeric\(\).#'

src/PSR7/Validators/SerializedParameter.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
use League\OpenAPIValidation\Schema\Exception\InvalidSchema;
1212
use League\OpenAPIValidation\Schema\Exception\SchemaMismatch;
1313
use League\OpenAPIValidation\Schema\Exception\TypeMismatch;
14+
use Respect\Validation\Exceptions\Exception;
1415
use Respect\Validation\Exceptions\ExceptionInterface;
1516
use Respect\Validation\Validator;
1617

@@ -71,7 +72,7 @@ public static function fromSpec(CebeParameter $parameter): self
7172
}
7273

7374
Validator::length(1, 1)->assert($content);
74-
} catch (ExceptionInterface $e) {
75+
} catch (Exception | ExceptionInterface $e) {
7576
// If there is a `schema`, `content` must be empty.
7677
// If there isn't a `schema`, a `content` with exactly 1 property must exist.
7778
// @see https://swagger.io/docs/specification/describing-parameters/#schema-vs-content

src/Schema/Keywords/AllOf.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
use League\OpenAPIValidation\Schema\Exception\InvalidSchema;
1010
use League\OpenAPIValidation\Schema\Exception\SchemaMismatch;
1111
use League\OpenAPIValidation\Schema\SchemaValidator;
12+
use Respect\Validation\Exceptions\Exception;
1213
use Respect\Validation\Exceptions\ExceptionInterface;
1314
use Respect\Validation\Validator;
1415

@@ -46,7 +47,7 @@ public function validate($data, array $allOf): void
4647
try {
4748
Validator::arrayVal()->assert($allOf);
4849
Validator::each(Validator::instance(CebeSchema::class))->assert($allOf);
49-
} catch (ExceptionInterface $exception) {
50+
} catch (Exception | ExceptionInterface $exception) {
5051
throw InvalidSchema::becauseDefensiveSchemaValidationFailed($exception);
5152
}
5253

src/Schema/Keywords/AnyOf.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
use League\OpenAPIValidation\Schema\Exception\NotEnoughValidSchemas;
1212
use League\OpenAPIValidation\Schema\Exception\SchemaMismatch;
1313
use League\OpenAPIValidation\Schema\SchemaValidator;
14+
use Respect\Validation\Exceptions\Exception;
1415
use Respect\Validation\Exceptions\ExceptionInterface;
1516
use Respect\Validation\Validator;
1617

@@ -48,7 +49,7 @@ public function validate($data, array $anyOf): void
4849
try {
4950
Validator::arrayVal()->assert($anyOf);
5051
Validator::each(Validator::instance(CebeSchema::class))->assert($anyOf);
51-
} catch (ExceptionInterface $e) {
52+
} catch (Exception | ExceptionInterface $e) {
5253
throw InvalidSchema::becauseDefensiveSchemaValidationFailed($e);
5354
}
5455

src/Schema/Keywords/Enum.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
use League\OpenAPIValidation\Schema\Exception\InvalidSchema;
88
use League\OpenAPIValidation\Schema\Exception\KeywordMismatch;
9+
use Respect\Validation\Exceptions\Exception;
910
use Respect\Validation\Exceptions\ExceptionInterface;
1011
use Respect\Validation\Validator;
1112

@@ -33,7 +34,7 @@ public function validate($data, array $enum): void
3334
try {
3435
Validator::arrayType()->assert($enum);
3536
Validator::trueVal()->assert(count($enum) >= 1);
36-
} catch (ExceptionInterface $e) {
37+
} catch (Exception | ExceptionInterface $e) {
3738
throw InvalidSchema::becauseDefensiveSchemaValidationFailed($e);
3839
}
3940

src/Schema/Keywords/Items.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
use League\OpenAPIValidation\Schema\Exception\InvalidSchema;
1010
use League\OpenAPIValidation\Schema\Exception\SchemaMismatch;
1111
use League\OpenAPIValidation\Schema\SchemaValidator;
12+
use Respect\Validation\Exceptions\Exception;
1213
use Respect\Validation\Exceptions\ExceptionInterface;
1314
use Respect\Validation\Validator;
1415

@@ -42,7 +43,7 @@ public function validate($data, CebeSchema $itemsSchema): void
4243
try {
4344
Validator::arrayVal()->assert($data);
4445
Validator::instance(CebeSchema::class)->assert($itemsSchema);
45-
} catch (ExceptionInterface $e) {
46+
} catch (Exception | ExceptionInterface $e) {
4647
throw InvalidSchema::becauseDefensiveSchemaValidationFailed($e);
4748
}
4849

src/Schema/Keywords/MaxItems.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
use League\OpenAPIValidation\Schema\Exception\InvalidSchema;
88
use League\OpenAPIValidation\Schema\Exception\KeywordMismatch;
9+
use Respect\Validation\Exceptions\Exception;
910
use Respect\Validation\Exceptions\ExceptionInterface;
1011
use Respect\Validation\Validator;
1112

@@ -31,7 +32,7 @@ public function validate($data, int $maxItems): void
3132
Validator::arrayType()->assert($data);
3233
Validator::intVal()->assert($maxItems);
3334
Validator::trueVal()->assert($maxItems >= 0);
34-
} catch (ExceptionInterface $e) {
35+
} catch (Exception | ExceptionInterface $e) {
3536
throw InvalidSchema::becauseDefensiveSchemaValidationFailed($e);
3637
}
3738

src/Schema/Keywords/MaxLength.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
use League\OpenAPIValidation\Schema\Exception\InvalidSchema;
88
use League\OpenAPIValidation\Schema\Exception\KeywordMismatch;
9+
use Respect\Validation\Exceptions\Exception;
910
use Respect\Validation\Exceptions\ExceptionInterface;
1011
use Respect\Validation\Validator;
1112

@@ -36,7 +37,7 @@ public function validate($data, int $maxLength): void
3637
Validator::stringType()->assert($data);
3738
Validator::intType()->assert($maxLength);
3839
Validator::trueVal()->assert($maxLength >= 0);
39-
} catch (ExceptionInterface $e) {
40+
} catch (Exception | ExceptionInterface $e) {
4041
throw InvalidSchema::becauseDefensiveSchemaValidationFailed($e);
4142
}
4243

src/Schema/Keywords/MaxProperties.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
use League\OpenAPIValidation\Schema\Exception\InvalidSchema;
88
use League\OpenAPIValidation\Schema\Exception\KeywordMismatch;
9+
use Respect\Validation\Exceptions\Exception;
910
use Respect\Validation\Exceptions\ExceptionInterface;
1011
use Respect\Validation\Validator;
1112

@@ -30,7 +31,7 @@ public function validate($data, int $maxProperties): void
3031
try {
3132
Validator::arrayType()->assert($data);
3233
Validator::trueVal()->assert($maxProperties >= 0);
33-
} catch (ExceptionInterface $e) {
34+
} catch (Exception | ExceptionInterface $e) {
3435
throw InvalidSchema::becauseDefensiveSchemaValidationFailed($e);
3536
}
3637

src/Schema/Keywords/Maximum.php

+11-3
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,12 @@
66

77
use League\OpenAPIValidation\Schema\Exception\InvalidSchema;
88
use League\OpenAPIValidation\Schema\Exception\KeywordMismatch;
9+
use Respect\Validation\Exceptions\Exception;
910
use Respect\Validation\Exceptions\ExceptionInterface;
11+
use Respect\Validation\Rules\NumericVal;
1012
use Respect\Validation\Validator;
1113

14+
use function class_exists;
1215
use function sprintf;
1316

1417
class Maximum extends BaseKeyword
@@ -39,9 +42,14 @@ class Maximum extends BaseKeyword
3942
public function validate($data, $maximum, bool $exclusiveMaximum = false): void
4043
{
4144
try {
42-
Validator::numeric()->assert($data);
43-
Validator::numeric()->assert($maximum);
44-
} catch (ExceptionInterface $e) {
45+
if (class_exists(NumericVal::class)) {
46+
Validator::numericVal()->assert($data);
47+
Validator::numericVal()->positive()->assert($maximum);
48+
} else {
49+
Validator::numeric()->assert($data);
50+
Validator::numeric()->positive()->assert($maximum);
51+
}
52+
} catch (Exception | ExceptionInterface $e) {
4553
throw InvalidSchema::becauseDefensiveSchemaValidationFailed($e);
4654
}
4755

src/Schema/Keywords/MinItems.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
use League\OpenAPIValidation\Schema\Exception\InvalidSchema;
88
use League\OpenAPIValidation\Schema\Exception\KeywordMismatch;
9+
use Respect\Validation\Exceptions\Exception;
910
use Respect\Validation\Exceptions\ExceptionInterface;
1011
use Respect\Validation\Validator;
1112

@@ -34,7 +35,7 @@ public function validate($data, int $minItems): void
3435
Validator::arrayType()->assert($data);
3536
Validator::intVal()->assert($minItems);
3637
Validator::trueVal()->assert($minItems >= 0);
37-
} catch (ExceptionInterface $e) {
38+
} catch (Exception | ExceptionInterface $e) {
3839
throw InvalidSchema::becauseDefensiveSchemaValidationFailed($e);
3940
}
4041

src/Schema/Keywords/MinLength.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
use League\OpenAPIValidation\Schema\Exception\InvalidSchema;
88
use League\OpenAPIValidation\Schema\Exception\KeywordMismatch;
9+
use Respect\Validation\Exceptions\Exception;
910
use Respect\Validation\Exceptions\ExceptionInterface;
1011
use Respect\Validation\Validator;
1112

@@ -38,7 +39,7 @@ public function validate($data, int $minLength): void
3839
Validator::stringType()->assert($data);
3940
Validator::intVal()->assert($minLength);
4041
Validator::trueVal()->assert($minLength >= 0);
41-
} catch (ExceptionInterface $e) {
42+
} catch (Exception | ExceptionInterface $e) {
4243
throw InvalidSchema::becauseDefensiveSchemaValidationFailed($e);
4344
}
4445

src/Schema/Keywords/MinProperties.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
use League\OpenAPIValidation\Schema\Exception\InvalidSchema;
88
use League\OpenAPIValidation\Schema\Exception\KeywordMismatch;
9+
use Respect\Validation\Exceptions\Exception;
910
use Respect\Validation\Exceptions\ExceptionInterface;
1011
use Respect\Validation\Validator;
1112

@@ -33,7 +34,7 @@ public function validate($data, int $minProperties): void
3334
try {
3435
Validator::arrayType()->assert($data);
3536
Validator::trueVal()->assert($minProperties >= 0);
36-
} catch (ExceptionInterface $e) {
37+
} catch (Exception | ExceptionInterface $e) {
3738
throw InvalidSchema::becauseDefensiveSchemaValidationFailed($e);
3839
}
3940

src/Schema/Keywords/Minimum.php

+11-3
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,12 @@
66

77
use League\OpenAPIValidation\Schema\Exception\InvalidSchema;
88
use League\OpenAPIValidation\Schema\Exception\KeywordMismatch;
9+
use Respect\Validation\Exceptions\Exception;
910
use Respect\Validation\Exceptions\ExceptionInterface;
11+
use Respect\Validation\Rules\NumericVal;
1012
use Respect\Validation\Validator;
1113

14+
use function class_exists;
1215
use function sprintf;
1316

1417
class Minimum extends BaseKeyword
@@ -39,9 +42,14 @@ class Minimum extends BaseKeyword
3942
public function validate($data, $minimum, bool $exclusiveMinimum = false): void
4043
{
4144
try {
42-
Validator::numeric()->assert($data);
43-
Validator::numeric()->assert($minimum);
44-
} catch (ExceptionInterface $e) {
45+
if (class_exists(NumericVal::class)) {
46+
Validator::numericVal()->assert($data);
47+
Validator::numericVal()->positive()->assert($minimum);
48+
} else {
49+
Validator::numeric()->assert($data);
50+
Validator::numeric()->positive()->assert($minimum);
51+
}
52+
} catch (Exception | ExceptionInterface $e) {
4553
throw InvalidSchema::becauseDefensiveSchemaValidationFailed($e);
4654
}
4755

src/Schema/Keywords/MultipleOf.php

+11-3
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,12 @@
66

77
use League\OpenAPIValidation\Schema\Exception\InvalidSchema;
88
use League\OpenAPIValidation\Schema\Exception\KeywordMismatch;
9+
use Respect\Validation\Exceptions\Exception;
910
use Respect\Validation\Exceptions\ExceptionInterface;
11+
use Respect\Validation\Rules\NumericVal;
1012
use Respect\Validation\Validator;
1113

14+
use function class_exists;
1215
use function sprintf;
1316

1417
class MultipleOf extends BaseKeyword
@@ -25,9 +28,14 @@ class MultipleOf extends BaseKeyword
2528
public function validate($data, $multipleOf): void
2629
{
2730
try {
28-
Validator::numeric()->assert($data);
29-
Validator::numeric()->positive()->assert($multipleOf);
30-
} catch (ExceptionInterface $e) {
31+
if (class_exists(NumericVal::class)) {
32+
Validator::numericVal()->assert($data);
33+
Validator::numericVal()->positive()->assert($multipleOf);
34+
} else {
35+
Validator::numeric()->assert($data);
36+
Validator::numeric()->positive()->assert($multipleOf);
37+
}
38+
} catch (Exception | ExceptionInterface $e) {
3139
throw InvalidSchema::becauseDefensiveSchemaValidationFailed($e);
3240
}
3341

src/Schema/Keywords/Not.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
use League\OpenAPIValidation\Schema\Exception\KeywordMismatch;
1111
use League\OpenAPIValidation\Schema\Exception\SchemaMismatch;
1212
use League\OpenAPIValidation\Schema\SchemaValidator;
13+
use Respect\Validation\Exceptions\Exception;
1314
use Respect\Validation\Exceptions\ExceptionInterface;
1415
use Respect\Validation\Validator;
1516

@@ -42,7 +43,7 @@ public function validate($data, CebeSchema $not): void
4243
{
4344
try {
4445
Validator::instance(CebeSchema::class)->assert($not);
45-
} catch (ExceptionInterface $e) {
46+
} catch (Exception | ExceptionInterface $e) {
4647
throw InvalidSchema::becauseDefensiveSchemaValidationFailed($e);
4748
}
4849

src/Schema/Keywords/OneOf.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
use League\OpenAPIValidation\Schema\Exception\SchemaMismatch;
1313
use League\OpenAPIValidation\Schema\Exception\TooManyValidSchemas;
1414
use League\OpenAPIValidation\Schema\SchemaValidator;
15+
use Respect\Validation\Exceptions\Exception;
1516
use Respect\Validation\Exceptions\ExceptionInterface;
1617
use Respect\Validation\Validator;
1718

@@ -52,7 +53,7 @@ public function validate($data, array $oneOf): void
5253
try {
5354
Validator::arrayVal()->assert($oneOf);
5455
Validator::each(Validator::instance(CebeSchema::class))->assert($oneOf);
55-
} catch (ExceptionInterface $e) {
56+
} catch (Exception | ExceptionInterface $e) {
5657
throw InvalidSchema::becauseDefensiveSchemaValidationFailed($e);
5758
}
5859

src/Schema/Keywords/Pattern.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
use League\OpenAPIValidation\Schema\Exception\InvalidSchema;
88
use League\OpenAPIValidation\Schema\Exception\KeywordMismatch;
9+
use Respect\Validation\Exceptions\Exception;
910
use Respect\Validation\Exceptions\ExceptionInterface;
1011
use Respect\Validation\Validator;
1112

@@ -33,7 +34,7 @@ public function validate($data, string $pattern): void
3334
try {
3435
Validator::stringType()->assert($data);
3536
Validator::stringType()->assert($pattern);
36-
} catch (ExceptionInterface $e) {
37+
} catch (Exception | ExceptionInterface $e) {
3738
throw InvalidSchema::becauseDefensiveSchemaValidationFailed($e);
3839
}
3940

src/Schema/Keywords/Properties.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
use League\OpenAPIValidation\Schema\Exception\KeywordMismatch;
1111
use League\OpenAPIValidation\Schema\Exception\SchemaMismatch;
1212
use League\OpenAPIValidation\Schema\SchemaValidator;
13+
use Respect\Validation\Exceptions\Exception;
1314
use Respect\Validation\Exceptions\ExceptionInterface;
1415
use Respect\Validation\Validator;
1516

@@ -69,7 +70,7 @@ public function validate($data, array $properties, $additionalProperties): void
6970
Validator::arrayType()->assert($data);
7071
Validator::arrayVal()->assert($properties);
7172
Validator::each(Validator::instance(CebeSchema::class))->assert($properties);
72-
} catch (ExceptionInterface $exception) {
73+
} catch (Exception | ExceptionInterface $exception) {
7374
throw InvalidSchema::becauseDefensiveSchemaValidationFailed($exception);
7475
}
7576

src/Schema/Keywords/Required.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
use League\OpenAPIValidation\Schema\Exception\InvalidSchema;
1010
use League\OpenAPIValidation\Schema\Exception\KeywordMismatch;
1111
use League\OpenAPIValidation\Schema\SchemaValidator;
12+
use Respect\Validation\Exceptions\Exception;
1213
use Respect\Validation\Exceptions\ExceptionInterface;
1314
use Respect\Validation\Validator;
1415

@@ -53,7 +54,7 @@ public function validate($data, array $required): void
5354
Validator::arrayType()->assert($required);
5455
Validator::each(Validator::stringType())->assert($required);
5556
Validator::trueVal()->assert(count(array_unique($required)) === count($required));
56-
} catch (ExceptionInterface $e) {
57+
} catch (Exception | ExceptionInterface $e) {
5758
throw InvalidSchema::becauseDefensiveSchemaValidationFailed($e);
5859
}
5960

0 commit comments

Comments
 (0)