11<?php
22
3-
43namespace CodebarAg \LaravelPrerender ;
54
6-
75use App ;
86use Closure ;
9- use Illuminate \Support \Arr ;
10- use Illuminate \Support \Str ;
11- use Redirect ;
7+ use GuzzleHttp \Client as Guzzle ;
128use GuzzleHttp \Exception \RequestException ;
139use Illuminate \Contracts \Foundation \Application ;
14- use GuzzleHttp \Client as Guzzle ;
10+ use Illuminate \Support \Arr ;
11+ use Illuminate \Support \Str ;
1512use Psr \Http \Message \ResponseInterface ;
13+ use Redirect ;
1614use Symfony \Bridge \PsrHttpMessage \Factory \HttpFoundationFactory ;
1715use Symfony \Component \HttpFoundation \Response ;
1816
@@ -122,6 +120,7 @@ public function handle($request, Closure $next)
122120
123121 if (!$ this ->returnSoftHttpCodes && $ statusCode >= 300 && $ statusCode < 400 ) {
124122 $ headers = $ prerenderedResponse ->getHeaders ();
123+
125124 return Redirect::to (array_change_key_case ($ headers , CASE_LOWER )['location ' ][0 ], $ statusCode );
126125 }
127126
@@ -135,23 +134,30 @@ public function handle($request, Closure $next)
135134 /**
136135 * Returns whether the request must be prerendered.
137136 *
138- * @param $request
137+ * @param \Illuminate\Http\Request $request
139138 * @return bool
140139 */
141140 private function shouldShowPrerenderedPage ($ request )
142141 {
143142 $ userAgent = strtolower ($ request ->server ->get ('HTTP_USER_AGENT ' ));
144143 $ bufferAgent = $ request ->server ->get ('X-BUFFERBOT ' );
144+
145145 $ requestUri = $ request ->getRequestUri ();
146146 $ referer = $ request ->headers ->get ('Referer ' );
147147
148148 $ isRequestingPrerenderedPage = false ;
149149
150- if (!$ userAgent ) return false ;
151- if (!$ request ->isMethod ('GET ' )) return false ;
150+ if (!$ userAgent ) {
151+ return false ;
152+ }
153+ if (!$ request ->isMethod ('GET ' )) {
154+ return false ;
155+ }
152156
153157 // prerender if _escaped_fragment_ is in the query string
154- if ($ request ->query ->has ('_escaped_fragment_ ' )) $ isRequestingPrerenderedPage = true ;
158+ if ($ request ->query ->has ('_escaped_fragment_ ' )) {
159+ $ isRequestingPrerenderedPage = true ;
160+ }
155161
156162 // prerender if a crawler is detected
157163 foreach ($ this ->crawlerUserAgents as $ crawlerUserAgent ) {
@@ -160,9 +166,13 @@ private function shouldShowPrerenderedPage($request)
160166 }
161167 }
162168
163- if ($ bufferAgent ) $ isRequestingPrerenderedPage = true ;
169+ if ($ bufferAgent ) {
170+ $ isRequestingPrerenderedPage = true ;
171+ }
164172
165- if (!$ isRequestingPrerenderedPage ) return false ;
173+ if (!$ isRequestingPrerenderedPage ) {
174+ return false ;
175+ }
166176
167177 // only check whitelist if it is not empty
168178 if ($ this ->whitelist ) {
@@ -175,7 +185,9 @@ private function shouldShowPrerenderedPage($request)
175185 if ($ this ->blacklist ) {
176186 $ uris [] = $ requestUri ;
177187 // we also check for a blacklisted referer
178- if ($ referer ) $ uris [] = $ referer ;
188+ if ($ referer ) {
189+ $ uris [] = $ referer ;
190+ }
179191 if ($ this ->isListed ($ uris , $ this ->blacklist )) {
180192 return false ;
181193 }
@@ -210,9 +222,10 @@ private function getPrerenderedPageResponse($request)
210222 if ($ path === '/ ' ) {
211223 $ path = '' ;
212224 }
225+
213226 return $ this ->client ->get ($ this ->prerenderUri . '/ ' . urlencode ($ protocol .':// ' .$ host .'/ ' .$ path ), compact ('headers ' ));
214227 } catch (RequestException $ exception ) {
215- if (!$ this ->returnSoftHttpCodes && !empty ($ exception ->getResponse ()) && $ exception ->getResponse ()->getStatusCode () === 404 ) {
228+ if (!$ this ->returnSoftHttpCodes && !empty ($ exception ->getResponse ()) && $ exception ->getResponse ()->getStatusCode () === 404 ) {
216229 App::abort (404 );
217230 }
218231 // In case of an exception, we only throw the exception if we are in debug mode. Otherwise,
@@ -221,6 +234,7 @@ private function getPrerenderedPageResponse($request)
221234 if ($ this ->app ['config ' ]->get ('app.debug ' )) {
222235 throw $ exception ;
223236 }
237+
224238 return null ;
225239 }
226240 }
@@ -254,7 +268,7 @@ private function isListed($needles, $list)
254268 }
255269 }
256270 }
271+
257272 return false ;
258273 }
259-
260- }
274+ }
0 commit comments