Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
InputParamsResolver.php
Go to the documentation of this file.
1 <?php
7 declare(strict_types=1);
8 
10 
16 use Magento\Webapi\Controller\Rest\InputParamsResolver as WebapiInputParamsResolver;
17 
22 {
26  private $request;
30  private $paramsOverrider;
34  private $serviceInputProcessor;
38  private $router;
42  private $requestValidator;
46  private $inputParamsResolver;
50  private $isBulk;
51 
63  public function __construct(
64  RestRequest $request,
65  ParamsOverrider $paramsOverrider,
66  ServiceInputProcessor $inputProcessor,
67  Router $router,
68  RequestValidator $requestValidator,
69  WebapiInputParamsResolver $inputParamsResolver,
70  $isBulk = false
71  ) {
72  $this->request = $request;
73  $this->paramsOverrider = $paramsOverrider;
74  $this->serviceInputProcessor = $inputProcessor;
75  $this->router = $router;
76  $this->requestValidator = $requestValidator;
77  $this->inputParamsResolver = $inputParamsResolver;
78  $this->isBulk = $isBulk;
79  }
80 
92  public function resolve()
93  {
94  if ($this->isBulk === false) {
95  return [$this->inputParamsResolver->resolve()];
96  }
97  $this->requestValidator->validate();
98  $webapiResolvedParams = [];
99  $inputData = $this->request->getRequestData();
100 
101  $httpMethod = $this->request->getHttpMethod();
102  if ($httpMethod == \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_DELETE) {
103  $requestBodyParams = $this->request->getBodyParams();
104  $inputData = array_merge($requestBodyParams, $inputData);
105  }
106 
107  foreach ($inputData as $key => $singleEntityParams) {
108  $webapiResolvedParams[$key] = $this->resolveBulkItemParams($singleEntityParams);
109  }
110 
111  return $webapiResolvedParams;
112  }
113 
119  public function getRoute()
120  {
121  return $this->inputParamsResolver->getRoute();
122  }
123 
137  private function resolveBulkItemParams($inputData)
138  {
139  $route = $this->getRoute();
140  $serviceMethodName = $route->getServiceMethod();
141  $serviceClassName = $route->getServiceClass();
142  $inputParams = $this->serviceInputProcessor->process($serviceClassName, $serviceMethodName, $inputData);
143 
144  return $inputParams;
145  }
146 }
__construct(RestRequest $request, ParamsOverrider $paramsOverrider, ServiceInputProcessor $inputProcessor, Router $router, RequestValidator $requestValidator, WebapiInputParamsResolver $inputParamsResolver, $isBulk=false)