@@ -71,20 +71,10 @@ protected function _getRendererClass()
71
71
if (!is_array ($ acceptTypes )) {
72
72
$ acceptTypes = [$ acceptTypes ];
73
73
}
74
- // If Accept type = '*/*' then return default renderer.
75
- $ defaultRenderer = isset ($ this ->_renders ['default ' ]) ? $ this ->_renders ['default ' ] : null ;
76
74
foreach ($ acceptTypes as $ acceptType ) {
77
- if ($ acceptType == '*/* ' && $ defaultRenderer ) {
78
- return $ defaultRenderer ['model ' ];
79
- }
80
- foreach ($ this ->_renders as $ rendererConfig ) {
81
- $ rendererType = $ rendererConfig ['type ' ];
82
- if ($ acceptType == $ rendererType || $ acceptType == current (
83
- explode ('/ ' , $ rendererType )
84
- ) . '/* ' || $ acceptType == '*/* '
85
- ) {
86
- return $ rendererConfig ['model ' ];
87
- }
75
+ $ renderer = $ this ->getRendererConfig ($ acceptType );
76
+ if ($ renderer !== null ) {
77
+ return $ renderer ['model ' ];
88
78
}
89
79
}
90
80
/** If server does not have renderer for any of the accepted types it SHOULD send 406 (not acceptable). */
@@ -98,4 +88,30 @@ protected function _getRendererClass()
98
88
\Magento \Framework \Webapi \Exception::HTTP_NOT_ACCEPTABLE
99
89
);
100
90
}
91
+
92
+ /**
93
+ * Get renderer config by accept type.
94
+ *
95
+ * @param string $acceptType
96
+ * @return array|null
97
+ */
98
+ private function getRendererConfig ($ acceptType )
99
+ {
100
+ // If Accept type = '*/*' then return default renderer.
101
+ if ($ acceptType == '*/* ' && isset ($ this ->_renders ['default ' ])) {
102
+ return $ this ->_renders ['default ' ];
103
+ }
104
+
105
+ foreach ($ this ->_renders as $ rendererConfig ) {
106
+ $ rendererType = $ rendererConfig ['type ' ];
107
+ if ($ acceptType == $ rendererType
108
+ || $ acceptType == current (explode ('/ ' , $ rendererType )) . '/* '
109
+ || $ acceptType == '*/* '
110
+ ) {
111
+ return $ rendererConfig ;
112
+ }
113
+ }
114
+
115
+ return null ;
116
+ }
101
117
}
0 commit comments