81 lines
3.6 KiB
YAML
81 lines
3.6 KiB
YAML
name: DataUriNormalizer
|
|
class_comment: null
|
|
dependencies:
|
|
- name: File
|
|
type: class
|
|
source: Symfony\Component\HttpFoundation\File\File
|
|
- name: MimeTypeGuesserInterface
|
|
type: class
|
|
source: Symfony\Component\Mime\MimeTypeGuesserInterface
|
|
- name: MimeTypes
|
|
type: class
|
|
source: Symfony\Component\Mime\MimeTypes
|
|
- name: InvalidArgumentException
|
|
type: class
|
|
source: Symfony\Component\Serializer\Exception\InvalidArgumentException
|
|
- name: NotNormalizableValueException
|
|
type: class
|
|
source: Symfony\Component\Serializer\Exception\NotNormalizableValueException
|
|
properties: []
|
|
methods:
|
|
- name: denormalize
|
|
visibility: public
|
|
parameters:
|
|
- name: data
|
|
- name: type
|
|
- name: format
|
|
default: 'null'
|
|
- name: context
|
|
default: '[]'
|
|
comment: "# * Normalizes an {@see \\SplFileInfo} object to a data URI.\n# * Denormalizes\
|
|
\ a data URI to a {@see \\SplFileObject} object.\n# *\n# * @author K\xE9vin Dunglas\
|
|
\ <dunglas@gmail.com>\n# */\n# final class DataUriNormalizer implements NormalizerInterface,\
|
|
\ DenormalizerInterface\n# {\n# private const SUPPORTED_TYPES = [\n# \\SplFileInfo::class\
|
|
\ => true,\n# \\SplFileObject::class => true,\n# File::class => true,\n# ];\n\
|
|
# \n# private readonly ?MimeTypeGuesserInterface $mimeTypeGuesser;\n# \n# public\
|
|
\ function __construct(?MimeTypeGuesserInterface $mimeTypeGuesser = null)\n# {\n\
|
|
# if (!$mimeTypeGuesser && class_exists(MimeTypes::class)) {\n# $mimeTypeGuesser\
|
|
\ = MimeTypes::getDefault();\n# }\n# \n# $this->mimeTypeGuesser = $mimeTypeGuesser;\n\
|
|
# }\n# \n# public function getSupportedTypes(?string $format): array\n# {\n# return\
|
|
\ self::SUPPORTED_TYPES;\n# }\n# \n# public function normalize(mixed $object,\
|
|
\ ?string $format = null, array $context = []): string\n# {\n# if (!$object instanceof\
|
|
\ \\SplFileInfo) {\n# throw new InvalidArgumentException('The object must be an\
|
|
\ instance of \"\\SplFileInfo\".');\n# }\n# \n# $mimeType = $this->getMimeType($object);\n\
|
|
# $splFileObject = $this->extractSplFileObject($object);\n# \n# $data = '';\n\
|
|
# \n# $splFileObject->rewind();\n# while (!$splFileObject->eof()) {\n# $data .=\
|
|
\ $splFileObject->fgets();\n# }\n# \n# if ('text' === explode('/', $mimeType,\
|
|
\ 2)[0]) {\n# return \\sprintf('data:%s,%s', $mimeType, rawurlencode($data));\n\
|
|
# }\n# \n# return \\sprintf('data:%s;base64,%s', $mimeType, base64_encode($data));\n\
|
|
# }\n# \n# public function supportsNormalization(mixed $data, ?string $format\
|
|
\ = null, array $context = []): bool\n# {\n# return $data instanceof \\SplFileInfo;\n\
|
|
# }\n# \n# /**\n# * Regex adapted from Brian Grinstead code.\n# *\n# * @see https://gist.github.com/bgrins/6194623\n\
|
|
# *\n# * @throws InvalidArgumentException\n# * @throws NotNormalizableValueException"
|
|
- name: supportsDenormalization
|
|
visibility: public
|
|
parameters:
|
|
- name: data
|
|
- name: type
|
|
- name: format
|
|
default: 'null'
|
|
- name: context
|
|
default: '[]'
|
|
comment: null
|
|
- name: getMimeType
|
|
visibility: private
|
|
parameters:
|
|
- name: object
|
|
comment: '# * Gets the mime type of the object. Defaults to application/octet-stream.'
|
|
- name: extractSplFileObject
|
|
visibility: private
|
|
parameters:
|
|
- name: object
|
|
comment: '# * Returns the \SplFileObject instance associated with the given \SplFileInfo
|
|
instance.'
|
|
traits:
|
|
- Symfony\Component\HttpFoundation\File\File
|
|
- Symfony\Component\Mime\MimeTypeGuesserInterface
|
|
- Symfony\Component\Mime\MimeTypes
|
|
- Symfony\Component\Serializer\Exception\InvalidArgumentException
|
|
- Symfony\Component\Serializer\Exception\NotNormalizableValueException
|
|
interfaces:
|
|
- NormalizerInterface
|