Repository URL to install this package:
|
Version:
2.1.2 ▾
|
digitalascetic/google-api-client
/
DigitalAscetic
/
GoogleApiClientBundle
/
Controller
/
BaseWebServiceController.php
|
|---|
<?php
/**
* Created by PhpStorm.
* User: eduarddezacastellano
* Date: 07/09/2018
* Time: 13:29
*/
namespace DigitalAscetic\GoogleApiClientBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Serializer\Encoder\JsonEncoder;
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
use Symfony\Component\Serializer\Serializer;
use Symfony\Component\Serializer\Mapping\Factory\ClassMetadataFactory;
use Doctrine\Common\Annotations\AnnotationReader;
use Symfony\Component\Serializer\Mapping\Loader\AnnotationLoader;
class BaseWebServiceController extends Controller
{
/**
* @var EventDispatcherInterface $dispatcher
*/
protected $dispatcher;
/**
* @required
* @param EventDispatcherInterface $dispatcher
*/
public function setDispatcher(EventDispatcherInterface $dispatcher): void
{
$this->dispatcher = $dispatcher;
}
public function jsonResponse($data, $status = 200)
{
$headers['Content-Type'] = 'application/json';
$classMetadataFactory = new ClassMetadataFactory(new AnnotationLoader(new AnnotationReader()));
$encoders = array(new JsonEncoder());
$normalizer = array(new ObjectNormalizer($classMetadataFactory));
$serializer = new Serializer($normalizer, $encoders);
$json_content = $serializer->serialize(array('data' => $data), 'json', array('groups' => array('serializable')));
return new JsonResponse($json_content, $status, $headers, true);
}
}