|
14 | 14 | use ZEROSPAM\Framework\SDK\Request\Arguments\Mergeable\IMergeableArgument; |
15 | 15 | use ZEROSPAM\Framework\SDK\Request\Arguments\Mergeable\Worker\ArgMerger; |
16 | 16 | use ZEROSPAM\Framework\SDK\Request\Arguments\Stackable\IStackableArgument; |
| 17 | +use ZEROSPAM\Framework\SDK\Request\Arguments\Stackable\IStackableArrayArgument; |
| 18 | +use ZEROSPAM\Framework\SDK\Request\Arguments\Stackable\Worker\ArgArrayCollector; |
17 | 19 | use ZEROSPAM\Framework\SDK\Request\Arguments\Stackable\Worker\ArgCollector; |
18 | 20 | use ZEROSPAM\Framework\SDK\Request\Type\RequestType; |
19 | 21 | use ZEROSPAM\Framework\SDK\Response\Api\IResponse; |
@@ -43,6 +45,9 @@ abstract class BaseRequest implements IRequest |
43 | 45 | */ |
44 | 46 | private $stackableArguments = []; |
45 | 47 |
|
| 48 | + /** @var ArgArrayCollector[] */ |
| 49 | + private $stackableArrayArguments = []; |
| 50 | + |
46 | 51 | /** |
47 | 52 | * @var \ZEROSPAM\Framework\SDK\Response\Api\IResponse |
48 | 53 | */ |
@@ -74,7 +79,16 @@ public function addArgument(IArgument $arg): IRequest |
74 | 79 |
|
75 | 80 | return $this; |
76 | 81 | } |
77 | | - if ($arg instanceof IStackableArgument) { |
| 82 | + |
| 83 | + if ($arg instanceof IStackableArrayArgument) { |
| 84 | + if (!isset($this->stackableArrayArguments[$arg->getKey()])) { |
| 85 | + $this->stackableArrayArguments[$arg->getKey()] = new ArgArrayCollector(); |
| 86 | + } |
| 87 | + |
| 88 | + $this->stackableArrayArguments[$arg->getKey()]->addArgument($arg); |
| 89 | + |
| 90 | + return $this; |
| 91 | + } elseif ($arg instanceof IStackableArgument) { |
78 | 92 | if (!isset($this->stackableArguments[$arg->getKey()])) { |
79 | 93 | $this->stackableArguments[$arg->getKey()] = new ArgCollector(); |
80 | 94 | } |
@@ -185,7 +199,8 @@ public function toUri(): UriInterface |
185 | 199 | */ |
186 | 200 | final public function requestType(): RequestType |
187 | 201 | { |
188 | | - return $this->requestTypeOverride ?: $this->httpType(); |
| 202 | + return $this->requestTypeOverride |
| 203 | + ?: $this->httpType(); |
189 | 204 | } |
190 | 205 |
|
191 | 206 | /** |
@@ -277,6 +292,11 @@ private function generateUrl(): string |
277 | 292 | foreach ($this->stackableArguments as $key => $value) { |
278 | 293 | $query[$key] = $value->toArray(); |
279 | 294 | } |
| 295 | + |
| 296 | + foreach ($this->stackableArrayArguments as $key => $value) { |
| 297 | + $query[$key] = $value->toArray(); |
| 298 | + } |
| 299 | + |
280 | 300 | $queryArg = http_build_query($query, null, '&', PHP_QUERY_RFC3986); |
281 | 301 |
|
282 | 302 | $fullUrl = $this->routeUrl() . '?' . preg_replace($re, $subst, $queryArg); |
|
0 commit comments