/** * Gets a list of content types acceptable by the client browser. * * @return array List of content types in preferable order * @static */ public static function getAcceptableContentTypes() { //Method inherited from \Symfony\Component\HttpFoundation\Request return \Illuminate\Http\Request::getAcceptableContentTypes(); }
/** * @param \Illuminate\Http\Request $request * @return string */ public function guessRequestType(Request $request) { $userAgent = strtolower($request->header('User-Agent')); $contentType = array_get($request->getAcceptableContentTypes(), 0); if (strpos($userAgent, 'googlebot') !== false) { return 'googlebot'; } elseif ($request->ajax()) { return 'ajax'; } elseif ($request->pjax()) { return 'pjax'; } elseif ($contentType === null) { return 'raw'; } elseif (Str::contains($contentType, ['application/rss+xml', 'application/rdf+xml', 'application/atom+xml'])) { return 'feed'; } elseif ($request->wantsJson() || Str::contains($contentType, ['application/xml', 'text/xml'])) { return 'api'; } elseif (!$request->acceptsHtml()) { return 'other'; } elseif (Auth::check()) { return 'user'; } return 'public'; }