src/Controller/REST/RestController.php line 28

Open in your IDE?
  1. <?php
  2. namespace App\Controller\REST;
  3. use App\Entity\ApiLogs;
  4. use App\Service\RESTApiService;
  5. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  6. use Symfony\Component\HttpFoundation\JsonResponse;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\HttpFoundation\Response;
  9. use Symfony\Component\Routing\Annotation\Route;
  10. /**
  11.  * Class RestController
  12.  * @package App\Controller\REST
  13.  * @Route("/api")
  14.  */
  15. class RestController extends AbstractController
  16. {
  17.     /**
  18.      * @Route(
  19.      *     "/{ressource}/{id}",
  20.      *     name="api_entry_point",
  21.      *     methods={ "GET", "POST", "DELETE", "PUT" }
  22.      * )
  23.      */
  24.     public function entryPointAction(Request $requestRESTApiService $apiService$ressource$id null): Response
  25.     {
  26.         $log = new ApiLogs();
  27.         $log->setDateTime(new \DateTime());
  28.         $log->setUrl($request->getRequestUri());
  29.         $log->setMethod($request->getMethod());
  30.         $log->setRequestIp($request->getClientIp());
  31.         $log->setApiKey($request->headers->get('X-AUTH-TOKEN'));
  32.         $log->setRessource($ressource);
  33.         $log->setRessourceId($id);
  34.         $log->setParams(array('get'=>$request->query->all(),'post'=>$request->request->all()));
  35.         $log->setHasException(false);
  36.         try
  37.         {
  38.             return $apiService->handleApiRequest($request,$ressource,$id);
  39.         }
  40.         catch (\Exception $e)
  41.         {
  42.             $log->setHasException(true);
  43.             $log->setExceptionClass(get_class($e));
  44.             $log->setExceptionMessage($e->getMessage());
  45.             $log->setExceptionCode($e->getCode());
  46.             return new JsonResponse(array('error'=>["message" => $e->getMessage(), "code" => $e->getCode(), "trace" => $e->getTrace()]), '500');
  47.         }
  48.         finally
  49.         {
  50.             $log->setAuthenticated(null != $this->getUser());
  51.             $log->setUser($this->getUser());
  52.             $this->getDoctrine()->getManager()->persist($log);
  53.             $this->getDoctrine()->getManager()->flush();
  54.         }
  55.     }
  56. }