]> BookStack Code Mirror - bookstack/commitdiff
Cleaned up api docs implementation, added missing titles
authorDan Brown <redacted>
Sat, 21 Nov 2020 17:03:24 +0000 (17:03 +0000)
committerDan Brown <redacted>
Sat, 21 Nov 2020 17:03:24 +0000 (17:03 +0000)
app/Api/ApiDocsGenerator.php
app/Http/Controllers/Api/ApiDocsController.php
app/Http/Controllers/RecycleBinController.php

index ddba24bdb65d6ec8dc1474e3d50996c546623228..2953647bb33b21d59f565ce990cffecfc7a8beea 100644 (file)
@@ -1,7 +1,9 @@
 <?php namespace BookStack\Api;
 
 use BookStack\Http\Controllers\Api\ApiController;
+use Illuminate\Contracts\Container\BindingResolutionException;
 use Illuminate\Support\Collection;
+use Illuminate\Support\Facades\Cache;
 use Illuminate\Support\Facades\Route;
 use Illuminate\Support\Str;
 use ReflectionClass;
@@ -14,10 +16,27 @@ class ApiDocsGenerator
     protected $reflectionClasses = [];
     protected $controllerClasses = [];
 
+    /**
+     * Load the docs form the cache if existing
+     * otherwise generate and store in the cache.
+     */
+    public static function generateConsideringCache(): Collection
+    {
+        $appVersion = trim(file_get_contents(base_path('version')));
+        $cacheKey = 'api-docs::' . $appVersion;
+        if (Cache::has($cacheKey) && config('app.env') === 'production') {
+            $docs = Cache::get($cacheKey);
+        } else {
+            $docs = (new static())->generate();
+            Cache::put($cacheKey, $docs, 60 * 24);
+        }
+        return $docs;
+    }
+
     /**
      * Generate API documentation.
      */
-    public function generate(): Collection
+    protected function generate(): Collection
     {
         $apiRoutes = $this->getFlatApiRoutes();
         $apiRoutes = $this->loadDetailsFromControllers($apiRoutes);
@@ -58,7 +77,7 @@ class ApiDocsGenerator
 
     /**
      * Load body params and their rules by inspecting the given class and method name.
-     * @throws \Illuminate\Contracts\Container\BindingResolutionException
+     * @throws BindingResolutionException
      */
     protected function getBodyParamsFromClass(string $className, string $methodName): ?array
     {
index 84ddd521567ca13ebdada94d4722dee2e56ba307..80e86e101038f475da2e9f19a6821f7cab27b462 100644 (file)
@@ -1,8 +1,6 @@
 <?php namespace BookStack\Http\Controllers\Api;
 
 use BookStack\Api\ApiDocsGenerator;
-use Cache;
-use Illuminate\Support\Collection;
 
 class ApiDocsController extends ApiController
 {
@@ -12,7 +10,8 @@ class ApiDocsController extends ApiController
      */
     public function display()
     {
-        $docs = $this->getDocs();
+        $docs = ApiDocsGenerator::generateConsideringCache();
+        $this->setPageTitle(trans('settings.users_api_tokens_docs'));
         return view('api-docs.index', [
             'docs' => $docs,
         ]);
@@ -21,27 +20,10 @@ class ApiDocsController extends ApiController
     /**
      * Show a JSON view of the API docs data.
      */
-    public function json() {
-        $docs = $this->getDocs();
-        return response()->json($docs);
-    }
-
-    /**
-     * Get the base docs data.
-     * Checks and uses the system cache for quick re-fetching.
-     */
-    protected function getDocs(): Collection
+    public function json()
     {
-        $appVersion = trim(file_get_contents(base_path('version')));
-        $cacheKey = 'api-docs::' . $appVersion;
-        if (Cache::has($cacheKey) && config('app.env') === 'production') {
-            $docs = Cache::get($cacheKey);
-        } else {
-            $docs = (new ApiDocsGenerator())->generate();
-            Cache::put($cacheKey, $docs, 60*24);
-        }
-
-        return $docs;
+        $docs = ApiDocsGenerator::generateConsideringCache();
+        return response()->json($docs);
     }
 
 }
index 928310779cd84f356d1c998a5fc6bb39f73656bf..22c1a0f7ed7f2ebfd92f47e5fed931add5c78509 100644 (file)
@@ -31,6 +31,7 @@ class RecycleBinController extends Controller
     {
         $deletions = Deletion::query()->with(['deletable', 'deleter'])->paginate(10);
 
+        $this->setPageTitle(trans('settings.recycle_bin'));
         return view('settings.recycle-bin.index', [
             'deletions' => $deletions,
         ]);