mirror of
https://github.com/BookStackApp/BookStack.git
synced 2024-08-27 20:51:57 +00: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;
|
<?php namespace BookStack\Api;
|
||||||
|
|
||||||
use BookStack\Http\Controllers\Api\ApiController;
|
use BookStack\Http\Controllers\Api\ApiController;
|
||||||
|
use Illuminate\Contracts\Container\BindingResolutionException;
|
||||||
use Illuminate\Support\Collection;
|
use Illuminate\Support\Collection;
|
||||||
|
use Illuminate\Support\Facades\Cache;
|
||||||
use Illuminate\Support\Facades\Route;
|
use Illuminate\Support\Facades\Route;
|
||||||
use Illuminate\Support\Str;
|
use Illuminate\Support\Str;
|
||||||
use ReflectionClass;
|
use ReflectionClass;
|
||||||
@ -14,10 +16,27 @@ class ApiDocsGenerator
|
|||||||
protected $reflectionClasses = [];
|
protected $reflectionClasses = [];
|
||||||
protected $controllerClasses = [];
|
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.
|
* Generate API documentation.
|
||||||
*/
|
*/
|
||||||
public function generate(): Collection
|
protected function generate(): Collection
|
||||||
{
|
{
|
||||||
$apiRoutes = $this->getFlatApiRoutes();
|
$apiRoutes = $this->getFlatApiRoutes();
|
||||||
$apiRoutes = $this->loadDetailsFromControllers($apiRoutes);
|
$apiRoutes = $this->loadDetailsFromControllers($apiRoutes);
|
||||||
@ -58,7 +77,7 @@ class ApiDocsGenerator
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Load body params and their rules by inspecting the given class and method name.
|
* 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
|
protected function getBodyParamsFromClass(string $className, string $methodName): ?array
|
||||||
{
|
{
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
<?php namespace BookStack\Http\Controllers\Api;
|
<?php namespace BookStack\Http\Controllers\Api;
|
||||||
|
|
||||||
use BookStack\Api\ApiDocsGenerator;
|
use BookStack\Api\ApiDocsGenerator;
|
||||||
use Cache;
|
|
||||||
use Illuminate\Support\Collection;
|
|
||||||
|
|
||||||
class ApiDocsController extends ApiController
|
class ApiDocsController extends ApiController
|
||||||
{
|
{
|
||||||
@ -12,7 +10,8 @@ class ApiDocsController extends ApiController
|
|||||||
*/
|
*/
|
||||||
public function display()
|
public function display()
|
||||||
{
|
{
|
||||||
$docs = $this->getDocs();
|
$docs = ApiDocsGenerator::generateConsideringCache();
|
||||||
|
$this->setPageTitle(trans('settings.users_api_tokens_docs'));
|
||||||
return view('api-docs.index', [
|
return view('api-docs.index', [
|
||||||
'docs' => $docs,
|
'docs' => $docs,
|
||||||
]);
|
]);
|
||||||
@ -21,27 +20,10 @@ class ApiDocsController extends ApiController
|
|||||||
/**
|
/**
|
||||||
* Show a JSON view of the API docs data.
|
* Show a JSON view of the API docs data.
|
||||||
*/
|
*/
|
||||||
public function json() {
|
public function json()
|
||||||
$docs = $this->getDocs();
|
{
|
||||||
|
$docs = ApiDocsGenerator::generateConsideringCache();
|
||||||
return response()->json($docs);
|
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);
|
$deletions = Deletion::query()->with(['deletable', 'deleter'])->paginate(10);
|
||||||
|
|
||||||
|
$this->setPageTitle(trans('settings.recycle_bin'));
|
||||||
return view('settings.recycle-bin.index', [
|
return view('settings.recycle-bin.index', [
|
||||||
'deletions' => $deletions,
|
'deletions' => $deletions,
|
||||||
]);
|
]);
|
||||||
|
Loading…
Reference in New Issue
Block a user