Fully working version of working with products
This commit is contained in:
47
src/Objects/ObjectTransformer.php
Normal file
47
src/Objects/ObjectTransformer.php
Normal file
@ -0,0 +1,47 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace Ardent\GrocyApi\Objects;
|
||||
|
||||
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
use Symfony\Component\Serializer\Encoder\JsonEncoder;
|
||||
use Symfony\Component\Serializer\Mapping\Factory\ClassMetadataFactory;
|
||||
use Symfony\Component\Serializer\Mapping\Loader\AnnotationLoader;
|
||||
use Symfony\Component\Serializer\NameConverter\CamelCaseToSnakeCaseNameConverter;
|
||||
use Symfony\Component\Serializer\Normalizer\AbstractNormalizer;
|
||||
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
|
||||
use Symfony\Component\Serializer\Serializer;
|
||||
|
||||
class ObjectTransformer
|
||||
{
|
||||
public function SerializeObjectToJsonResponse($object, $context = []): JsonResponse
|
||||
{
|
||||
$defaultContext = [
|
||||
AbstractNormalizer::CIRCULAR_REFERENCE_HANDLER => function ($object, $format, $context) {
|
||||
return $object->getId();
|
||||
},
|
||||
];
|
||||
|
||||
$serializer = new Serializer([
|
||||
new ObjectNormalizer(),
|
||||
], [new JsonEncoder()]);
|
||||
$json = $serializer->serialize($object, 'json', $context);
|
||||
return new JsonResponse($json, 200, [], true);
|
||||
}
|
||||
|
||||
public static function denormalize($object, string $name): AbstractApiObject
|
||||
{
|
||||
return (new ObjectNormalizer())->denormalize($object, sprintf('%s\\%sObject', __NAMESPACE__, ucfirst($name)));
|
||||
}
|
||||
|
||||
public static function normalize(AbstractApiObject $object): array
|
||||
{
|
||||
$classMetaDataFactory = new ClassMetadataFactory(new AnnotationLoader());
|
||||
|
||||
$serializer = new Serializer([
|
||||
new ObjectNormalizer($classMetaDataFactory, new CamelCaseToSnakeCaseNameConverter()),
|
||||
]);
|
||||
return $serializer->normalize($object);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user