src/Controller/ApiPullController.php line 63

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Controller;
  4. use App\Channels\L2L;
  5. use App\Model\Property;
  6. use App\Providers\DirectorProvider;
  7. use App\Providers\MyroomsProvider;
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9. use Symfony\Component\HttpFoundation\JsonResponse;
  10. use Symfony\Component\HttpFoundation\Request;
  11. use Symfony\Component\HttpFoundation\Response;
  12. use Symfony\Component\Routing\Annotation\Route;
  13. use Swagger\Annotations as SWG;
  14. use Nelmio\ApiDocBundle\Annotation\Model;
  15. use Nelmio\ApiDocBundle\Annotation\Security;
  16. /**
  17.  * @Route("/api")
  18.  *
  19.  * @SWG\Parameter(
  20.  *     name="Authorization",
  21.  *     in="header",
  22.  *     required=true,
  23.  *     type="string",
  24.  *     default="Bearer {TOKEN}",
  25.  *     description="Bearer {token}",
  26.  *     )
  27.  */
  28. class ApiPullController extends AbstractController
  29. {
  30.     /**
  31.      * @Route("/check", name="api_check", methods={"GET"})
  32.      *
  33.      * @SWG\Response(
  34.      *     response=200,
  35.      *     description="Returns username"
  36.      * )
  37.      * @SWG\Tag(name="User")
  38.      * @Security(name="Bearer")
  39.      */
  40.     public function check()
  41.     {
  42.         return new JsonResponse(['username' => $this->getUser()->getUsername()]);
  43.     }
  44.     /**
  45.      * @Route("/ads", name="api_ads", methods={"GET"})
  46.      *
  47.      * @SWG\Response(
  48.      *     response=200,
  49.      *     description="Returns all ads",
  50.      *     @SWG\Schema(
  51.      *         type="array",
  52.      *         @SWG\Items(ref=@Model(type=App\Model\PropertyJson::class))
  53.      *     )
  54.      * )
  55.      * @SWG\Tag(name="Ads")
  56.      * @Security(name="Bearer")
  57.      */
  58.     public function all(Request $requestDirectorProvider $directorProviderMyroomsProvider $myroomsProvider)
  59.     {
  60.         $page = (int)$request->query->get('page'1);
  61.         $limit = (int)$request->query->get('limit'9999);
  62.         $propertiesDetails = [];
  63.         $properties $directorProvider->getProperties($page$limit);
  64.         foreach($properties->getProperties() as $property) {
  65.             $property $myroomsProvider->getProperty($property->getId(), false);
  66.             if($property instanceof Property) {
  67.                 $propertiesDetails[] = $property;
  68.             }
  69.             usleep(10000); // avoid 429 error
  70.         }
  71.         return new JsonResponse($propertiesDetails);
  72.     }
  73.     /**
  74.      * @Route("/ads/{id}", name="api_ad", methods={"GET"})
  75.      *
  76.      * @SWG\Response(
  77.      *     response=200,
  78.      *     description="Returns single ad",
  79.      *     @Model(type=App\Model\PropertyJson::class)
  80.      * )
  81.      * @SWG\Tag(name="Ads")
  82.      * @Security(name="Bearer")
  83.      */
  84.     public function ad(int $idMyroomsProvider $myroomsProvider)
  85.     {
  86.         $property $myroomsProvider->getProperty($id);
  87.         return new JsonResponse($property);
  88.     }
  89.     public function isAvailable()
  90.     {
  91.     }
  92. }