|
Apache/2.4.41 (Ubuntu) Linux vmi616275.contaboserver.net 5.4.0-84-generic #94-Ubuntu SMP Thu Aug 26 20:27:37 UTC 2021 x86_64 uid=33(www-data) gid=33(www-data) groups=33(www-data) server ip : 62.171.164.128 | your ip : 127.0.0.1 safemode OFF > / home / dev2.destoffenstraat.com / vendor / magento / framework / GraphQl / Exception / |
Filename | /home/dev2.destoffenstraat.com/vendor/magento/framework/GraphQl/Exception/ExceptionFormatter.php |
Size | 2.22 kb |
Permission | rw-r--r-- |
Owner | root : root |
Create time | 17-Aug-2025 10:26 |
Last modified | 07-Jan-2021 21:08 |
Last accessed | 23-Aug-2025 03:56 |
Actions | edit | rename | delete | download (gzip) |
View | text | code | image |
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
declare(strict_types=1);
namespace Magento\Framework\GraphQl\Exception;
use Magento\Framework\App\State;
use Magento\Framework\Webapi\ErrorProcessor;
use Psr\Log\LoggerInterface;
/**
* Wrapper for GraphQl Exception Formatter
*/
class ExceptionFormatter
{
const HTTP_GRAPH_QL_SCHEMA_ERROR_STATUS = 500;
/**
* @var State
*/
private $appState;
/**
* @var LoggerInterface
*/
private $logger;
/**
* @param State $appState
* @param ErrorProcessor $errorProcessor
*/
public function __construct(State $appState, ErrorProcessor $errorProcessor, LoggerInterface $logger)
{
$this->appState = $appState;
$errorProcessor->registerShutdownFunction();
$this->logger = $logger;
}
/**
* Format a GraphQL error from an exception by converting it to array to conform to GraphQL spec.
*
* This method only exposes exception message when exception implements ClientAware interface
* (or when debug flags are passed).
*
* @param \Throwable $exception
* @param string $internalErrorMessage
* @return array
* @throws \Throwable
*/
public function create(\Throwable $exception, $internalErrorMessage = null) : array
{
if (!$this->shouldShowDetail()) {
$reportId = uniqid("graph-ql-");
$message = "Report ID: {$reportId}; Message: {$exception->getMessage()}";
$code = $exception->getCode();
$loggedException = new \Exception($message, $code, $exception);
$this->logger->critical($loggedException);
}
return \GraphQL\Error\FormattedError::createFromException(
$exception,
$this->shouldShowDetail()
? \GraphQL\Error\Debug::INCLUDE_DEBUG_MESSAGE | \GraphQL\Error\Debug::INCLUDE_TRACE : false,
$internalErrorMessage
);
}
/**
* Return true if detailed error message should be displayed to client, false otherwise.
*
* @return bool
*/
public function shouldShowDetail() : bool
{
return $this->appState->getMode() === State::MODE_DEVELOPER;
}
}
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
declare(strict_types=1);
namespace Magento\Framework\GraphQl\Exception;
use Magento\Framework\App\State;
use Magento\Framework\Webapi\ErrorProcessor;
use Psr\Log\LoggerInterface;
/**
* Wrapper for GraphQl Exception Formatter
*/
class ExceptionFormatter
{
const HTTP_GRAPH_QL_SCHEMA_ERROR_STATUS = 500;
/**
* @var State
*/
private $appState;
/**
* @var LoggerInterface
*/
private $logger;
/**
* @param State $appState
* @param ErrorProcessor $errorProcessor
*/
public function __construct(State $appState, ErrorProcessor $errorProcessor, LoggerInterface $logger)
{
$this->appState = $appState;
$errorProcessor->registerShutdownFunction();
$this->logger = $logger;
}
/**
* Format a GraphQL error from an exception by converting it to array to conform to GraphQL spec.
*
* This method only exposes exception message when exception implements ClientAware interface
* (or when debug flags are passed).
*
* @param \Throwable $exception
* @param string $internalErrorMessage
* @return array
* @throws \Throwable
*/
public function create(\Throwable $exception, $internalErrorMessage = null) : array
{
if (!$this->shouldShowDetail()) {
$reportId = uniqid("graph-ql-");
$message = "Report ID: {$reportId}; Message: {$exception->getMessage()}";
$code = $exception->getCode();
$loggedException = new \Exception($message, $code, $exception);
$this->logger->critical($loggedException);
}
return \GraphQL\Error\FormattedError::createFromException(
$exception,
$this->shouldShowDetail()
? \GraphQL\Error\Debug::INCLUDE_DEBUG_MESSAGE | \GraphQL\Error\Debug::INCLUDE_TRACE : false,
$internalErrorMessage
);
}
/**
* Return true if detailed error message should be displayed to client, false otherwise.
*
* @return bool
*/
public function shouldShowDetail() : bool
{
return $this->appState->getMode() === State::MODE_DEVELOPER;
}
}