Skip to content

Commit 4437373

Browse files
committed
add LAX model strategy for query and body parameter validation
1 parent 1c98d69 commit 4437373

File tree

3 files changed

+56
-0
lines changed

3 files changed

+56
-0
lines changed

src/Enum/ModelStrategy.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,8 +208,10 @@
208208
use ToshY\BunnyNet\Model\API\Stream\ManageVideos\UpdateVideo;
209209
use ToshY\BunnyNet\Model\API\Stream\ManageVideos\UploadVideo;
210210
use ToshY\BunnyNet\Model\API\Stream\OEmbed\GetOEmbed;
211+
use ToshY\BunnyNet\Validation\Strategy\Body\LaxBodyValidationStrategy;
211212
use ToshY\BunnyNet\Validation\Strategy\Body\NoBodyValidationStrategy;
212213
use ToshY\BunnyNet\Validation\Strategy\Body\StrictBodyValidationStrategy;
214+
use ToshY\BunnyNet\Validation\Strategy\Query\LaxQueryValidationStrategy;
213215
use ToshY\BunnyNet\Validation\Strategy\Query\NoQueryValidationStrategy;
214216
use ToshY\BunnyNet\Validation\Strategy\Query\StrictQueryValidationStrategy;
215217
use ToshY\BunnyNet\Validation\Strategy\ValidationModelStrategy;
@@ -222,6 +224,8 @@ enum ModelStrategy
222224

223225
case STRICT_BODY;
224226

227+
case LAX;
228+
225229
case NONE;
226230

227231
/** @var array<class-string,ModelStrategy> */
@@ -483,6 +487,10 @@ public function validationStrategy(): ValidationModelStrategy
483487
query: new NoQueryValidationStrategy(),
484488
body: new StrictBodyValidationStrategy(),
485489
),
490+
self::LAX => new ValidationModelStrategy(
491+
query: new LaxQueryValidationStrategy(),
492+
body: new LaxBodyValidationStrategy(),
493+
),
486494
self::NONE => new ValidationModelStrategy(
487495
query: new NoQueryValidationStrategy(),
488496
body: new NoBodyValidationStrategy(),
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace ToshY\BunnyNet\Validation\Strategy\Body;
6+
7+
use ToshY\BunnyNet\Exception\Validation\UnexpectedParameterForObjectException;
8+
use ToshY\BunnyNet\Model\EndpointBodyInterface;
9+
use ToshY\BunnyNet\Validation\ParameterValidator;
10+
11+
class LaxBodyValidationStrategy implements BodyValidationStrategyInterface
12+
{
13+
/**
14+
* @inheritDoc
15+
*/
16+
public static function validate(array $values, EndpointBodyInterface $endpoint): void
17+
{
18+
try {
19+
ParameterValidator::validate($values, $endpoint->getBody());
20+
} catch (UnexpectedParameterForObjectException) {
21+
return;
22+
}
23+
}
24+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace ToshY\BunnyNet\Validation\Strategy\Query;
6+
7+
use ToshY\BunnyNet\Exception\Validation\UnexpectedParameterForObjectException;
8+
use ToshY\BunnyNet\Model\EndpointQueryInterface;
9+
use ToshY\BunnyNet\Validation\ParameterValidator;
10+
11+
class LaxQueryValidationStrategy implements QueryValidationStrategyInterface
12+
{
13+
/**
14+
* @inheritDoc
15+
*/
16+
public static function validate(array $values, EndpointQueryInterface $endpoint): void
17+
{
18+
try {
19+
ParameterValidator::validate($values, $endpoint->getQuery());
20+
} catch (UnexpectedParameterForObjectException) {
21+
return;
22+
}
23+
}
24+
}

0 commit comments

Comments
 (0)