🎉
This commit is contained in:
56
vendor/spatie/flare-client-php/src/FlareMiddleware/AddDocumentationLinks.php
vendored
Normal file
56
vendor/spatie/flare-client-php/src/FlareMiddleware/AddDocumentationLinks.php
vendored
Normal file
@@ -0,0 +1,56 @@
|
||||
<?php
|
||||
|
||||
namespace Spatie\FlareClient\FlareMiddleware;
|
||||
|
||||
use ArrayObject;
|
||||
use Closure;
|
||||
use Spatie\FlareClient\Report;
|
||||
|
||||
class AddDocumentationLinks implements FlareMiddleware
|
||||
{
|
||||
protected ArrayObject $documentationLinkResolvers;
|
||||
|
||||
public function __construct(ArrayObject $documentationLinkResolvers)
|
||||
{
|
||||
$this->documentationLinkResolvers = $documentationLinkResolvers;
|
||||
}
|
||||
|
||||
public function handle(Report $report, Closure $next)
|
||||
{
|
||||
if (! $throwable = $report->getThrowable()) {
|
||||
return $next($report);
|
||||
}
|
||||
|
||||
$links = $this->getLinks($throwable);
|
||||
|
||||
if (count($links)) {
|
||||
$report->addDocumentationLinks($links);
|
||||
}
|
||||
|
||||
return $next($report);
|
||||
}
|
||||
|
||||
/** @return array<int, string> */
|
||||
protected function getLinks(\Throwable $throwable): array
|
||||
{
|
||||
$allLinks = [];
|
||||
|
||||
foreach ($this->documentationLinkResolvers as $resolver) {
|
||||
$resolvedLinks = $resolver($throwable);
|
||||
|
||||
if (is_null($resolvedLinks)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (is_string($resolvedLinks)) {
|
||||
$resolvedLinks = [$resolvedLinks];
|
||||
}
|
||||
|
||||
foreach ($resolvedLinks as $link) {
|
||||
$allLinks[] = $link;
|
||||
}
|
||||
}
|
||||
|
||||
return array_values(array_unique($allLinks));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user