2016-03-22 17:45:05 +00:00
|
|
|
<?php
|
2023-04-01 16:45:21 +00:00
|
|
|
declare(strict_types=1);
|
2016-03-22 17:45:05 +00:00
|
|
|
|
2023-04-01 16:45:21 +00:00
|
|
|
namespace App\Controller\Api;
|
2016-03-22 17:45:05 +00:00
|
|
|
|
2023-04-01 16:45:21 +00:00
|
|
|
use App\DTO\Api\PostsPage;
|
|
|
|
use App\Factory\Blog\PostFactory;
|
2017-11-05 02:39:52 +00:00
|
|
|
use Doctrine\ORM\EntityManagerInterface;
|
|
|
|
use JMS\Serializer\SerializerInterface;
|
2017-11-04 19:38:38 +00:00
|
|
|
use Symfony\Component\HttpFoundation\{Request, Response};
|
2016-03-22 17:45:05 +00:00
|
|
|
|
|
|
|
class CrawlerController extends AbstractApiController
|
|
|
|
{
|
2023-04-01 16:45:21 +00:00
|
|
|
public function __construct(
|
|
|
|
private readonly string $crawlerToken,
|
|
|
|
) {
|
2017-11-05 02:03:26 +00:00
|
|
|
}
|
|
|
|
|
2017-11-05 02:39:52 +00:00
|
|
|
public function receiveAllPageAction(Request $request, SerializerInterface $serializer, PostFactory $postFactory, EntityManagerInterface $em): Response
|
2016-03-22 17:45:05 +00:00
|
|
|
{
|
2016-03-25 14:34:18 +00:00
|
|
|
$remoteToken = $request->request->get('token');
|
|
|
|
|
2017-11-05 02:03:26 +00:00
|
|
|
if (!$this->crawlerToken || ($this->crawlerToken !== $remoteToken)) {
|
2023-04-01 16:45:21 +00:00
|
|
|
return $this->createErrorResponse(
|
|
|
|
'Token error. Please check it in crawler and API parameters.',
|
|
|
|
Response::HTTP_FORBIDDEN,
|
|
|
|
);
|
2016-03-25 14:34:18 +00:00
|
|
|
}
|
|
|
|
|
2016-03-22 17:45:05 +00:00
|
|
|
$json = $request->request->get('json');
|
|
|
|
|
2017-11-04 19:38:38 +00:00
|
|
|
$page = $serializer->deserialize($json, PostsPage::class, 'json');
|
2016-03-23 22:49:22 +00:00
|
|
|
|
2017-11-05 01:42:08 +00:00
|
|
|
$continue = $postFactory->createFromPageDTO($page);
|
2016-03-23 22:49:22 +00:00
|
|
|
|
2017-11-05 01:42:08 +00:00
|
|
|
$em->flush();
|
2017-01-06 21:38:20 +00:00
|
|
|
|
2016-03-22 17:45:05 +00:00
|
|
|
return $this->createSuccessResponse([
|
2016-03-23 22:49:22 +00:00
|
|
|
'continue' => $continue,
|
2016-03-22 17:45:05 +00:00
|
|
|
]);
|
|
|
|
}
|
|
|
|
}
|