Skip to content

Commit 57f15cf

Browse files
authored
feat(state): strict query parameters (#6399)
* feat(state): strict query parameters * fixes
1 parent bd0e929 commit 57f15cf

23 files changed

+195
-1
lines changed

src/Metadata/ApiResource.php

+2
Original file line numberDiff line numberDiff line change
@@ -963,6 +963,7 @@ public function __construct(
963963
?string $policy = null,
964964
array|string|null $middleware = null,
965965
array|Parameters|null $parameters = null,
966+
protected ?bool $strictQueryParameterValidation = null,
966967
protected array $extraProperties = [],
967968
) {
968969
parent::__construct(
@@ -1007,6 +1008,7 @@ class: $class,
10071008
rules: $rules,
10081009
policy: $policy,
10091010
middleware: $middleware,
1011+
strictQueryParameterValidation: $strictQueryParameterValidation,
10101012
extraProperties: $extraProperties
10111013
);
10121014

src/Metadata/Delete.php

+2
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ public function __construct(
9898
mixed $rules = null,
9999
?string $policy = null,
100100
array|string|null $middleware = null,
101+
?bool $strictQueryParameterValidation = null,
101102
array $extraProperties = [],
102103
) {
103104
parent::__construct(
@@ -178,6 +179,7 @@ class: $class,
178179
extraProperties: $extraProperties,
179180
collectDenormalizationErrors: $collectDenormalizationErrors,
180181
parameters: $parameters,
182+
strictQueryParameterValidation: $strictQueryParameterValidation,
181183
stateOptions: $stateOptions,
182184
);
183185
}

src/Metadata/Extractor/XmlResourceExtractor.php

+1
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ private function buildExtendedBase(\SimpleXMLElement $resource): array
9494
'paginationViaCursor' => $this->buildPaginationViaCursor($resource),
9595
'exceptionToStatus' => $this->buildExceptionToStatus($resource),
9696
'queryParameterValidationEnabled' => $this->phpize($resource, 'queryParameterValidationEnabled', 'bool'),
97+
'strictQueryParameterValidation' => $this->phpize($resource, 'strictQueryParameterValidation', 'bool'),
9798
'stateOptions' => $this->buildStateOptions($resource),
9899
'links' => $this->buildLinks($resource),
99100
'headers' => $this->buildHeaders($resource),

src/Metadata/Extractor/YamlResourceExtractor.php

+1
Original file line numberDiff line numberDiff line change
@@ -338,6 +338,7 @@ private function buildOperations(array $resource, array $root): ?array
338338
'write' => $this->phpize($operation, 'write', 'bool'),
339339
'serialize' => $this->phpize($operation, 'serialize', 'bool'),
340340
'queryParameterValidate' => $this->phpize($operation, 'queryParameterValidate', 'bool'),
341+
'strictQueryParameterValidation' => $this->phpize($operation, 'strictQueryParameterValidation', 'bool'),
341342
'priority' => $this->phpize($operation, 'priority', 'integer'),
342343
'name' => $this->phpize($operation, 'name', 'string'),
343344
'class' => (string) $class,

src/Metadata/Extractor/schema/resources.xsd

+1
Original file line numberDiff line numberDiff line change
@@ -515,6 +515,7 @@
515515

516516
<xsd:attributeGroup name="extendedBase">
517517
<xsd:attributeGroup ref="base"/>
518+
<xsd:attribute type="xsd:boolean" name="strictQueryParameterValidation"/>
518519
<xsd:attribute type="xsd:boolean" name="queryParameterValidationEnabled"/>
519520
<xsd:attribute type="xsd:string" name="routePrefix"/>
520521
<xsd:attribute type="xsd:boolean" name="stateless"/>

src/Metadata/Get.php

+2
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ public function __construct(
9898
mixed $rules = null,
9999
?string $policy = null,
100100
array|string|null $middleware = null,
101+
?bool $strictQueryParameterValidation = null,
101102
array $extraProperties = [],
102103
) {
103104
parent::__construct(
@@ -177,6 +178,7 @@ class: $class,
177178
rules: $rules,
178179
policy: $policy,
179180
middleware: $middleware,
181+
strictQueryParameterValidation: $strictQueryParameterValidation,
180182
extraProperties: $extraProperties,
181183
);
182184
}

src/Metadata/GetCollection.php

+2
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ public function __construct(
9898
array|string|null $rules = null,
9999
?string $policy = null,
100100
array|string|null $middleware = null,
101+
?bool $strictQueryParameterValidation = null,
101102
array $extraProperties = [],
102103
private ?string $itemUriTemplate = null,
103104
) {
@@ -178,6 +179,7 @@ class: $class,
178179
rules: $rules,
179180
policy: $policy,
180181
middleware: $middleware,
182+
strictQueryParameterValidation: $strictQueryParameterValidation,
181183
stateOptions: $stateOptions,
182184
);
183185
}

src/Metadata/HttpOperation.php

+2
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ public function __construct(
155155
protected ?array $exceptionToStatus = null,
156156
protected ?array $links = null,
157157
protected ?array $errors = null,
158+
protected ?bool $strictQueryParameterValidation = null,
158159

159160
?string $shortName = null,
160161
?string $class = null,
@@ -257,6 +258,7 @@ class: $class,
257258
policy: $policy,
258259
middleware: $middleware,
259260
queryParameterValidationEnabled: $queryParameterValidationEnabled,
261+
strictQueryParameterValidation: $strictQueryParameterValidation,
260262
extraProperties: $extraProperties
261263
);
262264
}

src/Metadata/Metadata.php

+14
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ public function __construct(
8181
protected ?string $policy = null,
8282
protected array|string|null $middleware = null,
8383
protected ?bool $queryParameterValidationEnabled = null,
84+
protected ?bool $strictQueryParameterValidation = null,
8485
protected array $extraProperties = [],
8586
) {
8687
if (\is_array($parameters) && $parameters) {
@@ -666,4 +667,17 @@ public function withExtraProperties(array $extraProperties = []): static
666667

667668
return $self;
668669
}
670+
671+
public function getStrictQueryParameterValidation(): ?bool
672+
{
673+
return $this->strictQueryParameterValidation;
674+
}
675+
676+
public function withStrictQueryParameterValidation(bool $strictQueryParameterValidation): static
677+
{
678+
$self = clone $this;
679+
$self->strictQueryParameterValidation = $strictQueryParameterValidation;
680+
681+
return $self;
682+
}
669683
}

src/Metadata/Operation.php

+2
Original file line numberDiff line numberDiff line change
@@ -811,6 +811,7 @@ public function __construct(
811811
?string $policy = null,
812812
array|string|null $middleware = null,
813813
?bool $queryParameterValidationEnabled = null,
814+
protected ?bool $strictQueryParameterValidation = null,
814815
protected array $extraProperties = [],
815816
) {
816817
parent::__construct(
@@ -856,6 +857,7 @@ class: $class,
856857
policy: $policy,
857858
middleware: $middleware,
858859
queryParameterValidationEnabled: $queryParameterValidationEnabled,
860+
strictQueryParameterValidation: $strictQueryParameterValidation,
859861
extraProperties: $extraProperties,
860862
);
861863
}

src/Metadata/Patch.php

+2
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ public function __construct(
9898
mixed $rules = null,
9999
?string $policy = null,
100100
array|string|null $middleware = null,
101+
?bool $strictQueryParameterValidation = null,
101102
array $extraProperties = [],
102103
) {
103104
parent::__construct(
@@ -178,6 +179,7 @@ class: $class,
178179
rules: $rules,
179180
policy: $policy,
180181
middleware: $middleware,
182+
strictQueryParameterValidation: $strictQueryParameterValidation,
181183
extraProperties: $extraProperties
182184
);
183185
}

src/Metadata/Post.php

+2
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ public function __construct(
100100
array|string|null $middleware = null,
101101
array $extraProperties = [],
102102
private ?string $itemUriTemplate = null,
103+
?bool $strictQueryParameterValidation = null,
103104
) {
104105
parent::__construct(
105106
method: 'POST',
@@ -179,6 +180,7 @@ class: $class,
179180
rules: $rules,
180181
policy: $policy,
181182
middleware: $middleware,
183+
strictQueryParameterValidation: $strictQueryParameterValidation,
182184
extraProperties: $extraProperties
183185
);
184186
}

src/Metadata/Put.php

+2
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ public function __construct(
9999
?string $policy = null,
100100
array|string|null $middleware = null,
101101
array $extraProperties = [],
102+
?bool $strictQueryParameterValidation = null,
102103
private ?bool $allowCreate = null,
103104
) {
104105
parent::__construct(
@@ -179,6 +180,7 @@ class: $class,
179180
rules: $rules,
180181
policy: $policy,
181182
middleware: $middleware,
183+
strictQueryParameterValidation: $strictQueryParameterValidation,
182184
extraProperties: $extraProperties
183185
);
184186
}

src/Metadata/Tests/Extractor/Adapter/XmlResourceAdapter.php

+1
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ final class XmlResourceAdapter implements ResourceAdapterInterface
6262
'securityPostValidation',
6363
'securityPostValidationMessage',
6464
'queryParameterValidationEnabled',
65+
'strictQueryParameterValidation',
6566
'stateOptions',
6667
'collectDenormalizationErrors',
6768
'links',

0 commit comments

Comments
 (0)