Skip to content

Commit

Permalink
[shopsys] updated overblog/graphql-bundle to stable version 1.0.0 wit…
Browse files Browse the repository at this point in the history
…h dependencies (#2788)
  • Loading branch information
TomasLudvik authored Sep 13, 2023
1 parent 7848bfb commit 57fdcdd
Show file tree
Hide file tree
Showing 4 changed files with 55 additions and 17 deletions.
4 changes: 2 additions & 2 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
"require": {
"php": "^8.1",
"lcobucci/jwt": "^4.1.5",
"overblog/graphql-bundle": "^0.15",
"overblog/graphql-bundle": "^1.0",
"overblog/graphiql-bundle": "^0.3",
"shopsys/form-types-bundle": "12.0.x-dev",
"shopsys/framework": "12.0.x-dev",
Expand All @@ -34,7 +34,7 @@
"symfony/http-foundation": "^5.4",
"symfony/http-kernel": "^5.4",
"symfony/routing": "^5.4",
"webonyx/graphql-php": "^14.5"
"webonyx/graphql-php": "^15.6"
},
"require-dev": {
"phpunit/phpunit": "^9.5.20",
Expand Down
7 changes: 6 additions & 1 deletion src/Model/Error/ErrorCodeSubscriber.php
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,12 @@ public function onErrorFormatting(ErrorFormattingEvent $event): void
}

$formattedError = $event->getFormattedError();
$extensions = $formattedError->offsetGet('extensions');
$extensions = [];

if ($formattedError->offsetExists('extensions')) {
$extensions = $formattedError->offsetGet('extensions');
}

$extensions['userCode'] = $userCode;
$extensions['code'] = $code;
$formattedError->offsetSet('extensions', $extensions);
Expand Down
59 changes: 46 additions & 13 deletions src/Model/ScalarType/StringType.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,36 +4,69 @@

namespace Shopsys\FrontendApiBundle\Model\ScalarType;

use GraphQL\Error\Error;
use GraphQL\Error\SerializationError;
use GraphQL\Language\AST\Node;
use GraphQL\Type\Definition\StringType as BaseStringType;
use GraphQL\Language\AST\StringValueNode;
use GraphQL\Language\Printer;
use GraphQL\Type\Definition\ScalarType;
use GraphQL\Utils\Utils;
use Shopsys\FrameworkBundle\Component\String\TransformString;
use function is_object;
use function is_scalar;
use function is_string;
use function method_exists;

class StringType extends BaseStringType
class StringType extends ScalarType
{
/**
* webonix/graphql-php has wrong typing between StringType::parseLiteral and Leaf type interface::parseLiteral,
* so phpstan-param annotation must be used
*
* @phpstan-param \GraphQL\Language\AST\IntValueNode|\GraphQL\Language\AST\FloatValueNode|\GraphQL\Language\AST\StringValueNode|\GraphQL\Language\AST\BooleanValueNode|\GraphQL\Language\AST\NullValueNode $valueNode
* @param \GraphQL\Language\AST\Node $valueNode
* @param array|null $variables
* @param mixed $value
* @return string|null
*/
public function parseLiteral(Node $valueNode, ?array $variables = null)
public function serialize($value): ?string
{
$value = parent::parseLiteral($valueNode, $variables);
$canCast = is_scalar($value)
|| (is_object($value) && method_exists($value, '__toString'))
|| $value === null;

return TransformString::getTrimmedStringOrNullOnEmpty($value);
if (!$canCast) {
$notStringable = Utils::printSafe($value);

throw new SerializationError("String cannot represent value: {$notStringable}");
}

return TransformString::getTrimmedStringOrNullOnEmpty((string)$value);
}

/**
* @param mixed $value
* @throws \GraphQL\Error\Error
* @return string|null
*/
public function parseValue($value)
public function parseValue($value): ?string
{
$value = parent::parseValue($value);
if (!is_string($value)) {
$notString = Utils::printSafeJson($value);

throw new Error("String cannot represent a non string value: {$notString}");
}

return TransformString::getTrimmedStringOrNullOnEmpty($value);
}

/**
* @param \GraphQL\Language\AST\Node $valueNode
* @param array|null $variables
* @return string|null
*/
public function parseLiteral(Node $valueNode, ?array $variables = null): ?string
{
if ($valueNode instanceof StringValueNode) {
return TransformString::getTrimmedStringOrNullOnEmpty($valueNode->value);
}

$notString = Printer::doPrint($valueNode);

throw new Error("String cannot represent a non string value: {$notString}", $valueNode);
}
}
2 changes: 1 addition & 1 deletion src/Model/Token/Exception/TokenUserMessageException.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ class TokenUserMessageException extends CustomUserMessageAuthenticationException
/**
* @return bool
*/
public function isClientSafe()
public function isClientSafe(): bool
{
return true;
}
Expand Down

0 comments on commit 57fdcdd

Please sign in to comment.