@@ -71,20 +71,10 @@ protected function _getRendererClass()
7171 if (!is_array ($ acceptTypes )) {
7272 $ acceptTypes = [$ acceptTypes ];
7373 }
74- // If Accept type = '*/*' then return default renderer.
75- $ defaultRenderer = isset ($ this ->_renders ['default ' ]) ? $ this ->_renders ['default ' ] : null ;
7674 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 ' ];
8878 }
8979 }
9080 /** 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()
9888 \Magento \Framework \Webapi \Exception::HTTP_NOT_ACCEPTABLE
9989 );
10090 }
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+ }
101117}
0 commit comments