]> git.immae.eu Git - github/wallabag/wallabag.git/blobdiff - src/Wallabag/CoreBundle/Helper/HttpClientFactory.php
Add a real configuration for CS-Fixer
[github/wallabag/wallabag.git] / src / Wallabag / CoreBundle / Helper / HttpClientFactory.php
index 3e1d1ed5d7f1f77273e0b4a89a61d5d13d82001a..4602a6841614f8c6ad61ec6b72c45e9accd2f77b 100644 (file)
@@ -6,39 +6,66 @@ use Graby\Ring\Client\SafeCurlHandler;
 use GuzzleHttp\Client;
 use GuzzleHttp\Cookie\CookieJar;
 use GuzzleHttp\Event\SubscriberInterface;
+use Psr\Log\LoggerInterface;
 
 /**
  * Builds and configures the Guzzle HTTP client.
  */
 class HttpClientFactory
 {
-    /** @var \GuzzleHttp\Event\SubscriberInterface */
-    private $authenticatorSubscriber;
+    /** @var [\GuzzleHttp\Event\SubscriberInterface] */
+    private $subscribers = [];
 
     /** @var \GuzzleHttp\Cookie\CookieJar */
     private $cookieJar;
 
+    private $restrictedAccess;
+    private $logger;
+
     /**
      * HttpClientFactory constructor.
      *
-     * @param \GuzzleHttp\Event\SubscriberInterface $authenticatorSubscriber
-     * @param \GuzzleHttp\Cookie\CookieJar          $cookieJar
+     * @param \GuzzleHttp\Cookie\CookieJar $cookieJar
+     * @param string                       $restrictedAccess This param is a kind of boolean. Values: 0 or 1
+     * @param LoggerInterface              $logger
      */
-    public function __construct(SubscriberInterface $authenticatorSubscriber, CookieJar $cookieJar)
+    public function __construct(CookieJar $cookieJar, $restrictedAccess, LoggerInterface $logger)
     {
-        $this->authenticatorSubscriber = $authenticatorSubscriber;
         $this->cookieJar = $cookieJar;
+        $this->restrictedAccess = $restrictedAccess;
+        $this->logger = $logger;
     }
 
     /**
-     * @return \GuzzleHttp\Client
+     * @return \GuzzleHttp\Client|null
      */
     public function buildHttpClient()
     {
+        $this->logger->log('debug', 'Restricted access config enabled?', ['enabled' => (int) $this->restrictedAccess]);
+
+        if (0 === (int) $this->restrictedAccess) {
+            return;
+        }
+
+        // we clear the cookie to avoid websites who use cookies for analytics
+        $this->cookieJar->clear();
         // need to set the (shared) cookie jar
         $client = new Client(['handler' => new SafeCurlHandler(), 'defaults' => ['cookies' => $this->cookieJar]]);
-        $client->getEmitter()->attach($this->authenticatorSubscriber);
+
+        foreach ($this->subscribers as $subscriber) {
+            $client->getEmitter()->attach($subscriber);
+        }
 
         return $client;
     }
+
+    /**
+     * Adds a subscriber to the HTTP client.
+     *
+     * @param SubscriberInterface $subscriber
+     */
+    public function addSubscriber(SubscriberInterface $subscriber)
+    {
+        $this->subscribers[] = $subscriber;
+    }
 }