<?php
namespace App\EventListener;
use App\Config;
use App\Services\Aws\S3;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface as TokenStorage;
class RequestListener
{
private $awsComponentsS3;
private $tokenStorage;
public function __construct(TokenStorage $tokenStorage, S3 $awsComponentsS3)
{
$this->awsComponentsS3 = $awsComponentsS3;
$this->tokenStorage = $tokenStorage;
}
public function onKernelRequest(RequestEvent $event)
{
if ($event->isMainRequest()) {
try {
if ($event->getRequest()->files && sizeof($event->getRequest()->files)) {
$date = new \Datetime('now');
$route = $event->getRequest()->get('_route') ?? null;
foreach ($event->getRequest()->files as $key => $value) {
$userEmail = $this->tokenStorage->getToken() && !is_string($this->tokenStorage->getToken()->getUser()) ? $this->tokenStorage->getToken()->getUser()->getEmail() : null;
$fileKey = Config::S3_MAFO_UPLOADS_DIRECTORY . '/' . $date->format('c') . '_' . $userEmail . '_' . $route . '_' . $value->getClientOriginalName();
$this->awsComponentsS3->uploadFileToS3($value, $fileKey);
}
return;
}
} catch (\Exception $e) {
}
}
}
}