]> Raphaƫl G. Git Repositories - packbundle/blobdiff - Controller/MapController.php
Use RAPSYSPACK_AGENT, RAPSYSPACK_REDIRECT and RAPSYSPACK_TIMEOUT env variables
[packbundle] / Controller / MapController.php
index 034cba1ebf260083327fb446334af7591b9679fa..869d5abe913e40787142d9e2c2d072b939de0b61 100644 (file)
 
 namespace Rapsys\PackBundle\Controller;
 
+use Psr\Container\ContainerInterface;
+
 use Symfony\Component\HttpFoundation\HeaderUtils;
 use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
-use Symfony\Component\DependencyInjection\ContainerInterface;
 use Symfony\Component\Filesystem\Exception\IOExceptionInterface;
 use Symfony\Component\Filesystem\Filesystem;
 use Symfony\Component\HttpFoundation\BinaryFileResponse;
@@ -30,43 +31,11 @@ use Rapsys\PackBundle\Util\SluggerUtil;
  * {@inheritdoc}
  */
 class MapController extends AbstractController implements ServiceSubscriberInterface {
-       /**
-        * The cache path
-        */
-       protected string $cache;
-
-       /**
-        * The ContainerInterface instance
-        *
-        * @var ContainerInterface
-        */
-       protected $container;
-
        /**
         * The stream context instance
         */
        protected mixed $ctx;
 
-       /**
-        * The MapUtil instance
-        */
-       protected MapUtil $map;
-
-       /**
-        * The public path
-        */
-       protected string $public;
-
-       /**
-        * The SluggerUtil instance
-        */
-       protected SluggerUtil $slugger;
-
-       /**
-        * The tile server url
-        */
-       protected string $url;
-
        /**
         * Creates a new osm controller
         *
@@ -74,40 +43,22 @@ class MapController extends AbstractController implements ServiceSubscriberInter
         * @param MapUtil $map The MapUtil instance
         * @param SluggerUtil $slugger The SluggerUtil instance
         * @param string $cache The cache path
-        * @param string $public The public path
+        * @param string $path The public path
+        * @param string $prefix The prefix
         * @param string $url The tile server url
         */
-       function __construct(ContainerInterface $container, MapUtil $map, SluggerUtil $slugger, string $cache = '../var/cache/map', string $public = './bundles/rapsyspack/map', string $url = MapUtil::osm) {
-               //Set cache
-               $this->cache = $cache;
-
-               //Set container
-               $this->container = $container;
-
+       function __construct(protected ContainerInterface $container, protected MapUtil $map, protected SluggerUtil $slugger, protected string $cache = '../var/cache', protected string $path = './bundles/rapsyspack', protected string $prefix = 'map', protected string $url = MapUtil::osm) {
                //Set ctx
                $this->ctx = stream_context_create(
                        [
                                'http' => [
                                        #'header' => ['Referer: https://www.openstreetmap.org/'],
-                                       'max_redirects' => 5,
-                                       'timeout' => (int)ini_get('default_socket_timeout'),
-                                       #'user_agent' => 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36',
-                                       'user_agent' => (string)ini_get('user_agent')?:'rapsys_pack/2.0.0',
+                                       'max_redirects' => $_ENV['RAPSYSPACK_REDIRECT'] ?? 20,
+                                       'timeout' => $_ENV['RAPSYSPACK_TIMEOUT'] ?? (int)ini_get('default_socket_timeout') ?: 60,
+                                       'user_agent' => $_ENV['RAPSYSPACK_AGENT'] ?? (($agent = ini_get('user_agent')) !== false && $agent !== "" ? (string)$agent : RapsysPackBundle::getAlias().'/'.RapsysPackBundle::getVersion())
                                ]
                        ]
                );
-
-               //Set map
-               $this->map = $map;
-
-               //Set public
-               $this->public = $public;
-
-               //Set slugger
-               $this->slugger = $slugger;
-
-               //Set url
-               $this->url = $url;
        }
 
        /**
@@ -131,7 +82,7 @@ class MapController extends AbstractController implements ServiceSubscriberInter
                }
 
                //Set map
-               $map = $this->public.'/'.$zoom.'/'.$latitude.'/'.$longitude.'/'.$width.'x'.$height.'.jpeg';
+               $map = $this->path.'/'.$this->prefix.'/'.$zoom.'/'.$latitude.'/'.$longitude.'/'.$width.'x'.$height.'.jpeg';
 
                //Without multi up to date file
                if (!is_file($map) || !($mtime = stat($map)['mtime']) || $mtime < $updated) {
@@ -175,7 +126,7 @@ class MapController extends AbstractController implements ServiceSubscriberInter
                        for($x = $startX; $x <= $endX; $x++) {
                                for($y = $startY; $y <= $endY; $y++) {
                                        //Set cache path
-                                       $cache = $this->cache.'/'.$zoom.'/'.$x.'/'.$y.'.png';
+                                       $cache = $this->cache.'/'.$this->prefix.'/'.$zoom.'/'.$x.'/'.$y.'.png';
 
                                        //Without cache image
                                        if (!is_file($cache)) {
@@ -293,6 +244,9 @@ class MapController extends AbstractController implements ServiceSubscriberInter
                //Set last modified
                $response->setLastModified(\DateTime::createFromFormat('U', strval($mtime)));
 
+               //Disable robot index
+               $response->headers->set('X-Robots-Tag', 'noindex');
+
                //Set as public
                $response->setPublic();
 
@@ -325,7 +279,7 @@ class MapController extends AbstractController implements ServiceSubscriberInter
                }
 
                //Set multi
-               $map = $this->public.'/'.$zoom.'/'.$latitude.'/'.$longitude.'/'.$coordinate.'/'.$width.'x'.$height.'.jpeg';
+               $map = $this->path.'/'.$this->prefix.'/'.$zoom.'/'.$latitude.'/'.$longitude.'/'.$coordinate.'/'.$width.'x'.$height.'.jpeg';
 
                //Without multi up to date file
                if (!is_file($map) || !($mtime = stat($map)['mtime']) || $mtime < $updated) {
@@ -369,7 +323,7 @@ class MapController extends AbstractController implements ServiceSubscriberInter
                        for($x = $startX; $x <= $endX; $x++) {
                                for($y = $startY; $y <= $endY; $y++) {
                                        //Set cache path
-                                       $cache = $this->cache.'/'.$zoom.'/'.$x.'/'.$y.'.png';
+                                       $cache = $this->cache.'/'.$this->prefix.'/'.$zoom.'/'.$x.'/'.$y.'.png';
 
                                        //Without cache image
                                        if (!is_file($cache)) {
@@ -440,36 +394,36 @@ class MapController extends AbstractController implements ServiceSubscriberInter
                                $destY = intval(floor($height / 2 - MapUtil::tz * ($centerY - $this->map->latitudeToY(floatval($coordinate['latitude']), $zoom))));
 
                                //Set fill color
-                               $draw->setFillColor($this->map->fill);
+                               $draw->setFillColor($this->map->getFill());
 
                                //Set font size
-                               $draw->setFontSize($this->map->fontSize);
+                               $draw->setFontSize($this->map->getFontSize());
 
                                //Set stroke color
-                               $draw->setStrokeColor($this->map->stroke);
+                               $draw->setStrokeColor($this->map->getStroke());
 
                                //Set circle radius
-                               $radius = $this->map->radius;
+                               $radius = $this->map->getRadius();
 
                                //Set stroke width
-                               $stroke = $this->map->strokeWidth;
+                               $stroke = $this->map->getStrokeWidth();
 
                                //With matching position
                                if ($coordinate['latitude'] === $latitude && $coordinate['longitude'] == $longitude) {
                                        //Set fill color
-                                       $draw->setFillColor($this->map->highFill);
+                                       $draw->setFillColor($this->map->getHighFill());
 
                                        //Set font size
-                                       $draw->setFontSize($this->map->highFontSize);
+                                       $draw->setFontSize($this->map->getHighFontSize());
 
                                        //Set stroke color
-                                       $draw->setStrokeColor($this->map->highStroke);
+                                       $draw->setStrokeColor($this->map->getHighStroke());
 
                                        //Set circle radius
-                                       $radius = $this->map->highRadius;
+                                       $radius = $this->map->getHighRadius();
 
                                        //Set stroke width
-                                       $stroke = $this->map->highStrokeWidth;
+                                       $stroke = $this->map->getHighStrokeWidth();
                                }
 
                                //Set stroke width
@@ -538,6 +492,9 @@ class MapController extends AbstractController implements ServiceSubscriberInter
                //Set last modified
                $response->setLastModified(\DateTime::createFromFormat('U', strval($mtime)));
 
+               //Disable robot index
+               $response->headers->set('X-Robots-Tag', 'noindex');
+
                //Set as public
                $response->setPublic();