Skip to content

API Docs: Allowed multi-paragraph descriptions #4332

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jun 20, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions app/Api/ApiDocsGenerator.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@

class ApiDocsGenerator
{
protected $reflectionClasses = [];
protected $controllerClasses = [];
protected array $reflectionClasses = [];
protected array $controllerClasses = [];

/**
* Load the docs form the cache if existing
Expand Down Expand Up @@ -139,9 +139,10 @@ protected function getValidationAsString($validation): string
protected function parseDescriptionFromMethodComment(string $comment): string
{
$matches = [];
preg_match_all('/^\s*?\*\s((?![@\s]).*?)$/m', $comment, $matches);
preg_match_all('/^\s*?\*\s?($|((?![\/@\s]).*?))$/m', $comment, $matches);

return implode(' ', $matches[1] ?? []);
$text = implode(' ', $matches[1] ?? []);
return str_replace(' ', "\n", $text);
}

/**
Expand Down
1 change: 0 additions & 1 deletion app/Entities/Controllers/PageApiController.php
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,6 @@ public function create(Request $request)

/**
* View the details of a single page.
*
* Pages will always have HTML content. They may have markdown content
* if the markdown editor was used to last update the page.
*
Expand Down
3 changes: 3 additions & 0 deletions app/Permissions/ContentPermissionApiController.php
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,10 @@ public function __construct(

/**
* Read the configured content-level permissions for the item of the given type and ID.
*
* 'contentType' should be one of: page, book, chapter, bookshelf.
* 'contentId' should be the relevant ID of that item type you'd like to handle permissions for.
*
* The permissions shown are those that override the default for just the specified item, they do not show the
* full evaluated permission for a role, nor do they reflect permissions inherited from other items in the hierarchy.
* Fallback permission values may be `null` when inheriting is active.
Expand All @@ -57,6 +59,7 @@ public function read(string $contentType, string $contentId)
/**
* Update the configured content-level permission overrides for the item of the given type and ID.
* 'contentType' should be one of: page, book, chapter, bookshelf.
*
* 'contentId' should be the relevant ID of that item type you'd like to handle permissions for.
* Providing an empty `role_permissions` array will remove any existing configured role permissions,
* so you may want to fetch existing permissions beforehand if just adding/removing a single item.
Expand Down
2 changes: 2 additions & 0 deletions app/Uploads/Controllers/ImageGalleryApiController.php
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,10 @@ public function list()

/**
* Create a new image in the system.
*
* Since "image" is expected to be a file, this needs to be a 'multipart/form-data' type request.
* The provided "uploaded_to" should be an existing page ID in the system.
*
* If the "name" parameter is omitted, the filename of the provided image file will be used instead.
* The "type" parameter should be 'gallery' for page content images, and 'drawio' should only be used
* when the file is a PNG file with diagrams.net image data embedded within.
Expand Down
27 changes: 16 additions & 11 deletions resources/views/api-docs/parts/endpoint.blade.php
Original file line number Diff line number Diff line change
@@ -1,15 +1,20 @@
<h6 class="text-uppercase text-muted float right">{{ $endpoint['controller_method_kebab'] }}</h6>
<div class="flex-container-row items-center gap-m">
<span class="api-method text-mono" data-method="{{ $endpoint['method'] }}">{{ $endpoint['method'] }}</span>
<h5 id="{{ $endpoint['name'] }}" class="text-mono pb-xs">
@if($endpoint['controller_method_kebab'] === 'list')
<a style="color: inherit;" target="_blank" rel="noopener" href="{{ url($endpoint['uri']) }}">{{ url($endpoint['uri']) }}</a>
@else
<span>{{ url($endpoint['uri']) }}</span>
@endif
</h5>
<h6 class="text-uppercase text-muted text-mono ml-auto">{{ $endpoint['controller_method_kebab'] }}</h6>
</div>

<h5 id="{{ $endpoint['name'] }}" class="text-mono mb-m">
<span class="api-method" data-method="{{ $endpoint['method'] }}">{{ $endpoint['method'] }}</span>
@if($endpoint['controller_method_kebab'] === 'list')
<a style="color: inherit;" target="_blank" rel="noopener" href="{{ url($endpoint['uri']) }}">{{ url($endpoint['uri']) }}</a>
@else
{{ url($endpoint['uri']) }}
@endif
</h5>

<p class="mb-m">{{ $endpoint['description'] ?? '' }}</p>
<div class="mb-m">
@foreach(explode("\n", $endpoint['description'] ?? '') as $descriptionBlock)
<p class="mb-xxs">{{ $descriptionBlock }}</p>
@endforeach
</div>

@if($endpoint['body_params'] ?? false)
<details class="mb-m">
Expand Down
2 changes: 1 addition & 1 deletion tests/Api/ApiDocsTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ class ApiDocsTest extends TestCase
{
use TestsApi;

protected $endpoint = '/api/docs';
protected string $endpoint = '/api/docs';

public function test_api_endpoint_redirects_to_docs()
{
Expand Down