Vendor
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
|
||||
namespace Nuwave\Lighthouse\Execution;
|
||||
|
||||
use Closure;
|
||||
use GraphQL\Error\Error;
|
||||
use Nuwave\Lighthouse\Exceptions\RendersErrorsExtensions;
|
||||
|
||||
class ExtensionErrorHandler implements ErrorHandler
|
||||
{
|
||||
/**
|
||||
* Handle Exceptions that implement Nuwave\Lighthouse\Exceptions\RendersErrorsExtensions
|
||||
* and add extra content from them to the 'extensions' key of the Error that is rendered
|
||||
* to the User.
|
||||
*
|
||||
* @param \GraphQL\Error\Error $error
|
||||
* @param \Closure $next
|
||||
* @return array
|
||||
*/
|
||||
public static function handle(Error $error, Closure $next): array
|
||||
{
|
||||
$underlyingException = $error->getPrevious();
|
||||
|
||||
if ($underlyingException instanceof RendersErrorsExtensions) {
|
||||
// Reconstruct the error, passing in the extensions of the underlying exception
|
||||
$error = new Error(
|
||||
$error->message,
|
||||
$error->nodes,
|
||||
$error->getSource(),
|
||||
$error->getPositions(),
|
||||
$error->getPath(),
|
||||
$underlyingException,
|
||||
$underlyingException->extensionsContent()
|
||||
);
|
||||
}
|
||||
|
||||
return $next($error);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user