|
6 | 6 |
|
7 | 7 | use DoclerLabs\ApiClientGenerator\Ast\Builder\MethodBuilder;
|
8 | 8 | use DoclerLabs\ApiClientGenerator\Ast\ParameterNode;
|
| 9 | +use DoclerLabs\ApiClientGenerator\Entity\Field; |
9 | 10 | use DoclerLabs\ApiClientGenerator\Entity\Operation;
|
10 | 11 | use DoclerLabs\ApiClientGenerator\Entity\Response;
|
11 | 12 | use DoclerLabs\ApiClientGenerator\Input\Specification;
|
@@ -102,7 +103,7 @@ protected function generateAction(Operation $operation): ClassMethod
|
102 | 103 | return $this->emptyBodyAction($operation, $sendRequestStmt, $methodParam);
|
103 | 104 | }
|
104 | 105 |
|
105 |
| - return $this->singleBodyAction($operation, $responses[0], $sendRequestStmt, $methodParam); |
| 106 | + return $this->singleBodyAction($operation, $responses[0]->getBody(), $sendRequestStmt, $methodParam); |
106 | 107 | }
|
107 | 108 |
|
108 | 109 | return $this->multiBodyAction($operation, $responses, $sendRequestStmt, $methodParam);
|
@@ -185,10 +186,9 @@ private function generateHandleResponse(): ClassMethod
|
185 | 186 | ->getNode();
|
186 | 187 | }
|
187 | 188 |
|
188 |
| - private function processResponse(Variable $unserializedResponseVar, Response $response): array |
| 189 | + private function processResponse(Variable $unserializedResponseVar, Field $responseBody): array |
189 | 190 | {
|
190 |
| - $stmts = []; |
191 |
| - $responseBody = $response->getBody(); |
| 191 | + $stmts = []; |
192 | 192 | if ($responseBody->isComposite()) {
|
193 | 193 | $mapperClassName = SchemaMapperNaming::getClassName($responseBody);
|
194 | 194 | $this->addImport(
|
@@ -248,16 +248,15 @@ private function emptyBodyAction(
|
248 | 248 |
|
249 | 249 | private function singleBodyAction(
|
250 | 250 | Operation $operation,
|
251 |
| - Response $response, |
| 251 | + Field $responseBody, |
252 | 252 | MethodCall $sendRequestStmt,
|
253 | 253 | ParameterNode $methodParam
|
254 | 254 | ): ClassMethod {
|
255 | 255 | $responseVar = $this->builder->var('response');
|
256 |
| - $responseBody = $response->getBody(); |
257 | 256 | $handleResponseStmt = $this->builder->localMethodCall('handleResponse', $this->builder->args([$sendRequestStmt]));
|
258 | 257 | $stmts = [
|
259 | 258 | $this->builder->assign($responseVar, $handleResponseStmt),
|
260 |
| - ...$this->processResponse($responseVar, $response) |
| 259 | + ...$this->processResponse($responseVar, $responseBody) |
261 | 260 | ];
|
262 | 261 |
|
263 | 262 | return $this
|
@@ -298,13 +297,13 @@ private function multiBodyAction(
|
298 | 297 | $nullableCases[$response->getStatusCode()] = $this->builder->return($this->builder->val(null));
|
299 | 298 | } else {
|
300 | 299 | $returnTypeHints[$responseBody->getPhpTypeHint()] = true;
|
301 |
| - $isNullable |= $responseBody->isNullable(); |
| 300 | + $isNullable = $isNullable || $responseBody->isNullable(); |
302 | 301 |
|
303 | 302 | $phpClassName = $responseBody->getPhpClassName();
|
304 | 303 |
|
305 | 304 | $caseConditions[$phpClassName][] = new LNumber($response->getStatusCode());
|
306 | 305 | if (!isset($caseBodies[$phpClassName])) {
|
307 |
| - $caseBodies[$phpClassName] = $this->processResponse($unserializedResponseVar, $response); |
| 306 | + $caseBodies[$phpClassName] = $this->processResponse($unserializedResponseVar, $responseBody); |
308 | 307 | }
|
309 | 308 | }
|
310 | 309 | }
|
|
0 commit comments