7
7
namespace Magento \Webapi \Controller \Rest ;
8
8
9
9
use Magento \Framework \App \ObjectManager ;
10
+ use Magento \Framework \Exception \NoSuchEntityException ;
10
11
use Magento \Framework \Webapi \Rest \Request \ParamOverriderInterface ;
11
12
use Magento \Webapi \Model \Config \Converter ;
12
13
use Magento \Framework \Reflection \MethodsMap ;
@@ -53,9 +54,12 @@ public function __construct(
53
54
* @param array $inputData Incoming data from request
54
55
* @param array $parameters Contains parameters to replace or default
55
56
* @return array Data in same format as $inputData with appropriate parameters added or changed
57
+ * @throws NoSuchEntityException
56
58
*/
57
59
public function override (array $ inputData , array $ parameters )
58
60
{
61
+ $ inputData = $ this ->validateInputData ($ inputData );
62
+
59
63
foreach ($ parameters as $ name => $ paramData ) {
60
64
$ arrayKeys = explode ('. ' , $ name );
61
65
if ($ paramData [Converter::KEY_FORCE ] || !$ this ->isNestedArrayValueSet ($ inputData , $ arrayKeys )) {
@@ -71,6 +75,27 @@ public function override(array $inputData, array $parameters)
71
75
return $ inputData ;
72
76
}
73
77
78
+ /**
79
+ * Validates InputData
80
+ *
81
+ * @param array $inputData
82
+ * @return array
83
+ */
84
+ private function validateInputData (array $ inputData ): array
85
+ {
86
+ $ result = [];
87
+
88
+ $ data = array_filter ($ inputData , function ($ k ) use (&$ result ) {
89
+ $ key = is_string ($ k ) ? strtolower (str_replace ('_ ' , "" , $ k )) : $ k ;
90
+ return !isset ($ result [$ key ]) && ($ result [$ key ] = true );
91
+ }, ARRAY_FILTER_USE_KEY );
92
+
93
+ return array_map (function ($ value ) {
94
+ return is_array ($ value ) ? $ this ->validateInputData ($ value ) : $ value ;
95
+ }, $ data );
96
+ }
97
+
98
+
74
99
/**
75
100
* Determine if a nested array value is set.
76
101
*
0 commit comments