3
3
* Copyright © Magento, Inc. All rights reserved.
4
4
* See COPYING.txt for license details.
5
5
*/
6
+
6
7
namespace Magento \Webapi \Controller ;
7
8
8
9
use Magento \Framework \App \DeploymentConfig ;
13
14
use Magento \Framework \Webapi \Request ;
14
15
use Magento \Framework \Webapi \Rest \Request as RestRequest ;
15
16
use Magento \Framework \Webapi \Rest \Response as RestResponse ;
16
- use Magento \Framework \Webapi \Rest \Response \FieldsFilter ;
17
17
use Magento \Framework \Webapi \ServiceInputProcessor ;
18
- use Magento \Framework \Webapi \ServiceOutputProcessor ;
19
18
use Magento \Store \Model \Store ;
20
19
use Magento \Store \Model \StoreManagerInterface ;
21
20
use Magento \Webapi \Controller \Rest \ParamsOverrider ;
22
21
use Magento \Webapi \Controller \Rest \Router ;
23
22
use Magento \Webapi \Controller \Rest \Router \Route ;
24
- use Magento \Webapi \Model \Rest \Swagger \ Generator ;
23
+ use Magento \Webapi \Controller \Rest \RequestProcessorPool ;
25
24
26
25
/**
27
26
* Front controller for WebAPI REST area.
31
30
*/
32
31
class Rest implements \Magento \Framework \App \FrontControllerInterface
33
32
{
34
- /** Path for accessing REST API schema */
33
+ /**
34
+ * Path for accessing REST API schema
35
+ *
36
+ * @deprecated 100.3.0
37
+ */
35
38
const SCHEMA_PATH = '/schema ' ;
36
39
37
40
/**
@@ -93,11 +96,6 @@ class Rest implements \Magento\Framework\App\FrontControllerInterface
93
96
*/
94
97
protected $ areaList ;
95
98
96
- /**
97
- * @var \Magento\Framework\Webapi\Rest\Response\FieldsFilter
98
- */
99
- protected $ fieldsFilter ;
100
-
101
99
/**
102
100
* @var \Magento\Framework\Session\Generic
103
101
*/
@@ -110,31 +108,16 @@ class Rest implements \Magento\Framework\App\FrontControllerInterface
110
108
protected $ paramsOverrider ;
111
109
112
110
/**
113
- * @var \Magento\Framework\Webapi\ServiceOutputProcessor
114
- */
115
- protected $ serviceOutputProcessor ;
116
-
117
- /**
118
- * @var \Magento\Webapi\Model\Rest\Swagger\Generator
111
+ * @var RequestProcessorPool
119
112
*/
120
- protected $ swaggerGenerator ;
113
+ protected $ requestProcessorPool ;
121
114
122
115
/**
123
116
* @var StoreManagerInterface
124
117
* @deprecated 100.1.0
125
118
*/
126
119
private $ storeManager ;
127
120
128
- /**
129
- * @var DeploymentConfig
130
- */
131
- private $ deploymentConfig ;
132
-
133
- /**
134
- * @var Rest\InputParamsResolver
135
- */
136
- private $ inputParamsResolver ;
137
-
138
121
/**
139
122
* Initialize dependencies
140
123
*
@@ -148,11 +131,9 @@ class Rest implements \Magento\Framework\App\FrontControllerInterface
148
131
* @param ErrorProcessor $errorProcessor
149
132
* @param PathProcessor $pathProcessor
150
133
* @param \Magento\Framework\App\AreaList $areaList
151
- * @param FieldsFilter $fieldsFilter
152
134
* @param ParamsOverrider $paramsOverrider
153
- * @param ServiceOutputProcessor $serviceOutputProcessor
154
- * @param Generator $swaggerGenerator ,
155
135
* @param StoreManagerInterface $storeManager
136
+ * @param RequestProcessorPool $requestProcessorPool
156
137
*
157
138
* TODO: Consider removal of warning suppression
158
139
* @SuppressWarnings(PHPMD.ExcessiveParameterList)
@@ -168,11 +149,9 @@ public function __construct(
168
149
ErrorProcessor $ errorProcessor ,
169
150
PathProcessor $ pathProcessor ,
170
151
\Magento \Framework \App \AreaList $ areaList ,
171
- FieldsFilter $ fieldsFilter ,
172
152
ParamsOverrider $ paramsOverrider ,
173
- ServiceOutputProcessor $ serviceOutputProcessor ,
174
- Generator $ swaggerGenerator ,
175
- StoreManagerInterface $ storeManager
153
+ StoreManagerInterface $ storeManager ,
154
+ RequestProcessorPool $ requestProcessorPool
176
155
) {
177
156
$ this ->_router = $ router ;
178
157
$ this ->_request = $ request ;
@@ -184,37 +163,9 @@ public function __construct(
184
163
$ this ->_errorProcessor = $ errorProcessor ;
185
164
$ this ->_pathProcessor = $ pathProcessor ;
186
165
$ this ->areaList = $ areaList ;
187
- $ this ->fieldsFilter = $ fieldsFilter ;
188
166
$ this ->paramsOverrider = $ paramsOverrider ;
189
- $ this ->serviceOutputProcessor = $ serviceOutputProcessor ;
190
- $ this ->swaggerGenerator = $ swaggerGenerator ;
191
167
$ this ->storeManager = $ storeManager ;
192
- }
193
-
194
- /**
195
- * Get deployment config
196
- *
197
- * @return DeploymentConfig
198
- */
199
- private function getDeploymentConfig ()
200
- {
201
- if (!$ this ->deploymentConfig instanceof \Magento \Framework \App \DeploymentConfig) {
202
- $ this ->deploymentConfig = \Magento \Framework \App \ObjectManager::getInstance ()
203
- ->get (\Magento \Framework \App \DeploymentConfig::class);
204
- }
205
- return $ this ->deploymentConfig ;
206
- }
207
-
208
- /**
209
- * Set deployment config
210
- *
211
- * @param \Magento\Framework\App\DeploymentConfig $deploymentConfig
212
- * @return void
213
- * @deprecated 100.1.0
214
- */
215
- public function setDeploymentConfig (\Magento \Framework \App \DeploymentConfig $ deploymentConfig )
216
- {
217
- $ this ->deploymentConfig = $ deploymentConfig ;
168
+ $ this ->requestProcessorPool = $ requestProcessorPool ;
218
169
}
219
170
220
171
/**
@@ -231,17 +182,14 @@ public function dispatch(\Magento\Framework\App\RequestInterface $request)
231
182
$ path = $ this ->_pathProcessor ->process ($ request ->getPathInfo ());
232
183
$ this ->_request ->setPathInfo ($ path );
233
184
$ this ->areaList ->getArea ($ this ->_appState ->getAreaCode ())
234
- ->load (\Magento \Framework \App \Area::PART_TRANSLATE );
185
+ ->load (\Magento \Framework \App \Area::PART_TRANSLATE );
235
186
try {
236
- if ($ this ->isSchemaRequest ()) {
237
- $ this ->processSchemaRequest ();
238
- } else {
239
- $ this ->processApiRequest ();
240
- }
187
+ $ this ->requestProcessorPool ->process ($ this ->_request );
241
188
} catch (\Exception $ e ) {
242
189
$ maskedException = $ this ->_errorProcessor ->maskException ($ e );
243
190
$ this ->_response ->setException ($ maskedException );
244
191
}
192
+
245
193
return $ this ->_response ;
246
194
}
247
195
@@ -260,13 +208,14 @@ protected function isSchemaRequest()
260
208
*
261
209
* @return Route
262
210
* @deprecated 100.1.0
263
- * @see \ Magento\Webapi\Controller\Rest\InputParamsResolver::getRoute
211
+ * @see Magento\Webapi\Controller\Rest\InputParamsResolver::getRoute
264
212
*/
265
213
protected function getCurrentRoute ()
266
214
{
267
215
if (!$ this ->_route ) {
268
216
$ this ->_route = $ this ->_router ->match ($ this ->_request );
269
217
}
218
+
270
219
return $ this ->_route ;
271
220
}
272
221
@@ -289,68 +238,14 @@ protected function checkPermissions()
289
238
}
290
239
}
291
240
292
- /**
293
- * Execute schema request
294
- *
295
- * @return void
296
- */
297
- protected function processSchemaRequest ()
298
- {
299
- $ requestedServices = $ this ->_request ->getRequestedServices ('all ' );
300
- $ requestedServices = $ requestedServices == Request::ALL_SERVICES
301
- ? $ this ->swaggerGenerator ->getListOfServices ()
302
- : $ requestedServices ;
303
- $ responseBody = $ this ->swaggerGenerator ->generate (
304
- $ requestedServices ,
305
- $ this ->_request ->getScheme (),
306
- $ this ->_request ->getHttpHost (false ),
307
- $ this ->_request ->getRequestUri ()
308
- );
309
- $ this ->_response ->setBody ($ responseBody )->setHeader ('Content-Type ' , 'application/json ' );
310
- }
311
-
312
- /**
313
- * Execute API request
314
- *
315
- * @return void
316
- * @throws AuthorizationException
317
- * @throws \Magento\Framework\Exception\InputException
318
- * @throws \Magento\Framework\Webapi\Exception
319
- */
320
- protected function processApiRequest ()
321
- {
322
- $ inputParams = $ this ->getInputParamsResolver ()->resolve ();
323
-
324
- $ route = $ this ->getInputParamsResolver ()->getRoute ();
325
- $ serviceMethodName = $ route ->getServiceMethod ();
326
- $ serviceClassName = $ route ->getServiceClass ();
327
-
328
- $ service = $ this ->_objectManager ->get ($ serviceClassName );
329
- /** @var \Magento\Framework\Api\AbstractExtensibleObject $outputData */
330
- $ outputData = call_user_func_array ([$ service , $ serviceMethodName ], $ inputParams );
331
- $ outputData = $ this ->serviceOutputProcessor ->process (
332
- $ outputData ,
333
- $ serviceClassName ,
334
- $ serviceMethodName
335
- );
336
- if ($ this ->_request ->getParam (FieldsFilter::FILTER_PARAMETER ) && is_array ($ outputData )) {
337
- $ outputData = $ this ->fieldsFilter ->filter ($ outputData );
338
- }
339
- $ header = $ this ->getDeploymentConfig ()->get (ConfigOptionsListConstants::CONFIG_PATH_X_FRAME_OPT );
340
- if ($ header ) {
341
- $ this ->_response ->setHeader ('X-Frame-Options ' , $ header );
342
- }
343
- $ this ->_response ->prepareResponse ($ outputData );
344
- }
345
-
346
241
/**
347
242
* Validate request
348
243
*
349
244
* @throws AuthorizationException
350
245
* @throws \Magento\Framework\Webapi\Exception
351
246
* @return void
352
247
* @deprecated 100.1.0
353
- * @see \ Magento\Webapi\Controller\Rest\RequestValidator::validate
248
+ * @see Magento\Webapi\Controller\Rest\RequestValidator::validate
354
249
*/
355
250
protected function validateRequest ()
356
251
{
@@ -364,20 +259,4 @@ protected function validateRequest()
364
259
throw new \Magento \Framework \Webapi \Exception (__ ('Cannot perform GET operation with store code \'all \'' ));
365
260
}
366
261
}
367
-
368
- /**
369
- * The getter function to get InputParamsResolver object
370
- *
371
- * @return \Magento\Webapi\Controller\Rest\InputParamsResolver
372
- *
373
- * @deprecated 100.1.0
374
- */
375
- private function getInputParamsResolver ()
376
- {
377
- if ($ this ->inputParamsResolver === null ) {
378
- $ this ->inputParamsResolver = \Magento \Framework \App \ObjectManager::getInstance ()
379
- ->get (\Magento \Webapi \Controller \Rest \InputParamsResolver::class);
380
- }
381
- return $ this ->inputParamsResolver ;
382
- }
383
262
}
0 commit comments