/** * Handle an incoming request. * * @author Morten Rugaard <*****@*****.**> * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed * @throws \Nodes\Api\Exceptions\InvalidUserAgent */ public function handle($request, Closure $next) { // Only accept requests from Nodes user agents $nodesUserAgent = nodes_user_agent(); if (empty($nodesUserAgent)) { throw (new InvalidUserAgent('Invalid user agent. Reason: Could not locate Nodes details.', 400))->setStatusCode(400); } return $next($request); }
/** * Gather user agent data. * * @author Morten Rugaard <*****@*****.**> * * @return array */ protected function gatherUserAgentData() { // User agent container $userAgents = ['original' => null, 'nodes' => null]; // Retrieve original user agent $originalUserAgent = user_agent(); if (!empty($originalUserAgent)) { $userAgents['original'] = ['browser' => $originalUserAgent->getBrowserWithVersion(), 'platform' => $originalUserAgent->getPlatform(), 'device' => $originalUserAgent->getDevice(), 'isMobile' => $originalUserAgent->isMobile(), 'isTablet' => $originalUserAgent->isTablet()]; } // Retrieve nodes user agent $nodesUserAgent = nodes_user_agent(); if (!empty($nodesUserAgent)) { $userAgents['nodes'] = ['version' => $nodesUserAgent->getVersion(), 'platform' => $nodesUserAgent->getPlatform(), 'device' => $nodesUserAgent->getDevice(), 'debug' => $nodesUserAgent->getDebug()]; } return $userAgents; }