2016-03-22 17:45:05 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace Skobkin\Bundle\PointToolsBundle\Controller\Api;
|
|
|
|
|
2017-11-05 01:42:08 +00:00
|
|
|
use Doctrine\ORM\EntityManager;
|
|
|
|
use JMS\Serializer\Serializer;
|
2017-11-04 19:38:38 +00:00
|
|
|
use Skobkin\Bundle\PointToolsBundle\DTO\Api\PostsPage;
|
2016-03-23 22:49:22 +00:00
|
|
|
use Skobkin\Bundle\PointToolsBundle\Service\Factory\Blogs\PostFactory;
|
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
|
|
|
|
{
|
2017-11-05 01:42:08 +00:00
|
|
|
public function receiveAllPageAction(Request $request, Serializer $serializer, PostFactory $postFactory, EntityManager $em): Response
|
2016-03-22 17:45:05 +00:00
|
|
|
{
|
2016-03-25 14:34:18 +00:00
|
|
|
$remoteToken = $request->request->get('token');
|
|
|
|
$localToken = $this->getParameter('crawler_token');
|
|
|
|
|
|
|
|
if (!$localToken || ($localToken !== $remoteToken)) {
|
|
|
|
return $this->createErrorResponse('Token error. Please check it in crawler and API parameters.', Response::HTTP_FORBIDDEN);
|
|
|
|
}
|
|
|
|
|
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
|
|
|
]);
|
|
|
|
}
|
|
|
|
}
|