mirror of
https://github.com/BookStackApp/BookStack.git
synced 2024-11-23 08:57:39 +08:00
Cleaned up api docs implementation, added missing titles
This commit is contained in:
parent
65ddd16532
commit
f76a2a69f7
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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();
|
||||
public function json()
|
||||
{
|
||||
$docs = ApiDocsGenerator::generateConsideringCache();
|
||||
return response()->json($docs);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the base docs data.
|
||||
* Checks and uses the system cache for quick re-fetching.
|
||||
*/
|
||||
protected function getDocs(): 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 ApiDocsGenerator())->generate();
|
||||
Cache::put($cacheKey, $docs, 60*24);
|
||||
}
|
||||
|
||||
return $docs;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
]);
|
||||
|
|
Loading…
Reference in New Issue
Block a user