public function injectInspection($request, $response)
{
$this->response = $response;
if (!$this->getInjectorType($request, $response)) {
return;
}
switch ($this->injectorType) {
case 'redirect':
// Put the collectors bag into a session flash
$collectorsData = $this->collectorMan->getScripts('inspector', 'REDIRECT:' . $request->url() . ' -> ' . $response->getTargetUrl(), $response->getStatusCode());
$request->session()->flash('LARAVEL_INSPECTOR_REDIRECT', $collectorsData);
break;
case 'view':
$collectorsData = $this->collectorMan->getScripts('inspector', 'VIEW:' . $response->getOriginalContent()->getName(), $response->getStatusCode());
// if there is a flashed inspection (redirect), append it to this response
$redirectData = null;
if (isset($request->session) && $request->session()->has('LARAVEL_INSPECTOR_REDIRECT')) {
$redirectData = $request->session()->get('LARAVEL_INSPECTOR_REDIRECT');
session()->forget('LARAVEL_INSPECTOR_REDIRECT');
}
$inspectionBag = (string) view('inspector::view_console', ['redirectData' => $redirectData, 'collectorsData' => $collectorsData]);
$content = $response->getContent();
// Ensure string content
if (is_string($content)) {
$content = str_replace('</body>', $inspectionBag . '</body>', $response->getContent());
$response->setContent($content);
}
break;
case 'json':
header('Content-Type: application/json', true);
$content = json_decode($this->response->getContent(), true) ?: [];
if ($request->headers->has('laravel-inspector')) {
$content['LARAVEL_INSPECTOR'] = $this->collectorMan->getScripts('inspector', $request->method() . ':' . $request->url(), $response->getStatusCode());
} else {
$content['LARAVEL_INSPECTOR'] = $this->collectorMan->getPreJson('inspector');
}
$response->setContent(json_encode($content));
break;
}
}