middleware( function ($request, $next) { $this->help = app(HelpInterface::class); return $next($request); } ); } /** * @param $route * * @return \Illuminate\Http\JsonResponse */ public function show(string $route) { $language = Preferences::get('language', config('firefly.default_language', 'en_US'))->data; $html = $this->getHelpText($route, $language); return Response::json(['html' => $html]); } /** * @param string $route * @param string $language * * @return string */ private function getHelpText(string $route, string $language): string { // get language and default variables. $content = '

' . strval(trans('firefly.route_has_no_help')) . '

'; // if no such route, log error and return default text. if (!$this->help->hasRoute($route)) { Log::error('No such route: ' . $route); return $content; } // help content may be cached: if ($this->help->inCache($route, $language)) { $content = $this->help->getFromCache($route, $language); Log::debug(sprintf('Help text %s was in cache.', $language)); return $content; } // get help content from Github: $content = $this->help->getFromGithub($route, $language); // content will have 0 length when Github failed. Try en_US when it does: if (strlen($content) === 0) { $language = 'en_US'; // also check cache first: if ($this->help->inCache($route, $language)) { Log::debug(sprintf('Help text %s was in cache.', $language)); $content = $this->help->getFromCache($route, $language); return $content; } $content = $this->help->getFromGithub($route, $language); } // help still empty? if (strlen($content) !== 0) { $this->help->putInCache($route, $language, $content); return $content; } return '

' . strval(trans('firefly.route_has_no_help')) . '

'; } }