src/MDS/WebInOutTravelBundle/Controller/ApiNewsWebController.php line 28

Open in your IDE?
  1. <?php
  2. /**
  3.  * Created by PhpStorm.
  4.  * User: DEVELUP-USER3
  5.  * Date: 07/10/2019
  6.  * Time: 10:15
  7.  */
  8. namespace App\MDS\WebInOutTravelBundle\Controller;
  9. use App\MDS\WebInOutTravelBundle\Service\ApiNewsWebService;
  10. use Symfony\Component\HttpFoundation\Request;
  11. use Symfony\Component\HttpFoundation\Response;
  12. use FOS\RestBundle\Controller\Annotations as Rest;
  13. use FOS\RestBundle\Controller\AbstractFOSRestController;
  14. use Symfony\Component\HttpFoundation\JsonResponse;
  15. class ApiNewsWebController extends AbstractFOSRestController
  16. {
  17.     /**
  18.      * @Rest\Get("/api/newsweb/listGet")
  19.      * @param Request $request
  20.      * @return Response
  21.      */
  22.     public function apiNewsWebListGetAction(Request $request)
  23.     {
  24.         $em $this->getDoctrine()->getManager();
  25.         $newsList = array();
  26.         $language null;
  27.         try {
  28.             // Compruebo:
  29.             // 1. que la página web que solicita este recurso está entre las websites permitidas
  30.             $websiteReferer $request->headers->get('referer') ?? "";
  31.             // 2. que la lista de categorías NO esté vacía, que SÍ la hayan enviado y que tenga categorías permitidas.
  32.             $categoryList $request->query->get('categoryList');
  33.             // 3. que la lista de tokens NO esté vacía y que SÍ la hayan enviado.
  34.             $tokenList $request->headers->get('token');
  35.             $language $request->query->get('language');
  36.             $response_base ApiNewsWebService::getNewsData($em$websiteReferer$tokenList$categoryList$language);
  37.             $response_body json_encode($response_baseJSON_UNESCAPED_UNICODE JSON_UNESCAPED_SLASHES);
  38.             $response = new Response($response_body200);
  39.         } catch (\Throwable $th) {
  40.             $response = new Response($th400);
  41.         }
  42.         return $response;
  43.     }
  44.     /**
  45.      * @Rest\Post("/api/newsweb/listPost")
  46.      * @param Request $request
  47.      * @return Response
  48.      */
  49.     public function apiNewsWebListPostAction(Request $request)
  50.     {
  51.         $em $this->getDoctrine()->getManager();
  52.         $websiteReferer $request->request->get('referer'); // "https://develup.solutions";
  53.         $tokenList $request->request->get('token');
  54.         $categoryList $request->request->get('categoryList');
  55.         $language $request->request->get('language');
  56.         $response_base ApiNewsWebService::getNewsData($em$websiteReferer$tokenList$categoryList$language);
  57.         $response_body json_encode($response_baseJSON_UNESCAPED_UNICODE JSON_UNESCAPED_SLASHES);
  58.         $response = new Response($response_body200);
  59.         return $response;
  60.     }
  61.     /**
  62.      * @Rest\Get("/api/newsweb/getExtendedNewsData")
  63.      * @param Request $request
  64.      * @return Response
  65.      */
  66.     public function apiGetExtendedNewsDataAction(Request $request)
  67.     {
  68.         $newsData = array();
  69.         // Compruebo:
  70.         // 1. que la página web que solicita este recurso está entre las websites permitidas
  71.         $websiteReferer $request->headers->get('referer');
  72.         $onlyHost parse_url($websiteRefererPHP_URL_HOST);
  73.         $isAllowedWeb ApiNewsWebService::isAllowedWebsiteReferer($onlyHost);
  74.         // 2. que el token no sea vacío y no sea nulo
  75.         $token $request->headers->get('token');
  76.         $isTokenValid ApiNewsWebService::isNotNullAndNotEmpty($token);
  77.         if ($isAllowedWeb && $isTokenValid) {
  78.             $em $this->getDoctrine()->getManager();
  79.             $response_base ApiNewsWebService::getNewsDataExtended($em$token$websiteReferer);
  80.         } else {
  81.             $newsData[] = [
  82.                 "isAllowedWeb" => $isAllowedWeb,
  83.                 "isTokenValid" => $isTokenValid,
  84.             ];
  85.             $response_base = array(
  86.                 'data' => $newsData,
  87.                 'response' => 'KO'
  88.             );
  89.         }
  90.         $response_body json_encode($response_baseJSON_UNESCAPED_UNICODE JSON_UNESCAPED_SLASHES);
  91.         $response = new Response($response_body200);
  92.         return $response;
  93.     }
  94.     /**
  95.      * @Rest\Post("/api/newsweb/getExtendedNewsDataPost")
  96.      * @param Request $request
  97.      * @return Response
  98.      */
  99.     public function apiGetExtendedNewsDataPostAction(Request $request)
  100.     {
  101.         $newsData = array();
  102.         // Compruebo:
  103.         // 1. que la página web que solicita este recurso está entre las websites permitidas
  104.         $websiteReferer $request->request->get('referer');
  105.         $onlyHost parse_url($websiteRefererPHP_URL_HOST);
  106.         $isAllowedWeb ApiNewsWebService::isAllowedWebsiteReferer($onlyHost);
  107.         // 2. que el token no sea vacío y no sea nulo
  108.         $token $request->request->get('token');
  109.         $newsSlug $request->request->get('slug') ?? '';
  110.         $isTokenValid ApiNewsWebService::isNotNullAndNotEmpty($token);
  111.         $isNewsIdValid ApiNewsWebService::isNotNullAndNotEmpty($newsSlug);
  112.         if ($isAllowedWeb && $isTokenValid && $isNewsIdValid) {
  113.             $em $this->getDoctrine()->getManager();
  114.             $response_base ApiNewsWebService::getNewsDataExtendedId($em$newsSlug$websiteReferer);
  115.         } else {
  116.             $newsData[] = [
  117.                 "isAllowedWeb" => $isAllowedWeb,
  118.                 "isTokenValid" => $isTokenValid,
  119.             ];
  120.             $response_base = array(
  121.                 'data' => $newsData,
  122.                 'response' => 'KO'
  123.             );
  124.         }
  125.         $response_body json_encode($response_baseJSON_UNESCAPED_UNICODE JSON_UNESCAPED_SLASHES);
  126.         $response = new Response($response_body200);
  127.         return $response;
  128.     }
  129. }