]> git.immae.eu Git - github/wallabag/wallabag.git/blobdiff - src/Wallabag/CoreBundle/Helper/HttpClientFactory.php
Added authentication for restricted access articles
[github/wallabag/wallabag.git] / src / Wallabag / CoreBundle / Helper / HttpClientFactory.php
diff --git a/src/Wallabag/CoreBundle/Helper/HttpClientFactory.php b/src/Wallabag/CoreBundle/Helper/HttpClientFactory.php
new file mode 100644 (file)
index 0000000..3e1d1ed
--- /dev/null
@@ -0,0 +1,44 @@
+<?php
+
+namespace Wallabag\CoreBundle\Helper;
+
+use Graby\Ring\Client\SafeCurlHandler;
+use GuzzleHttp\Client;
+use GuzzleHttp\Cookie\CookieJar;
+use GuzzleHttp\Event\SubscriberInterface;
+
+/**
+ * Builds and configures the Guzzle HTTP client.
+ */
+class HttpClientFactory
+{
+    /** @var \GuzzleHttp\Event\SubscriberInterface */
+    private $authenticatorSubscriber;
+
+    /** @var \GuzzleHttp\Cookie\CookieJar */
+    private $cookieJar;
+
+    /**
+     * HttpClientFactory constructor.
+     *
+     * @param \GuzzleHttp\Event\SubscriberInterface $authenticatorSubscriber
+     * @param \GuzzleHttp\Cookie\CookieJar          $cookieJar
+     */
+    public function __construct(SubscriberInterface $authenticatorSubscriber, CookieJar $cookieJar)
+    {
+        $this->authenticatorSubscriber = $authenticatorSubscriber;
+        $this->cookieJar = $cookieJar;
+    }
+
+    /**
+     * @return \GuzzleHttp\Client
+     */
+    public function buildHttpClient()
+    {
+        // need to set the (shared) cookie jar
+        $client = new Client(['handler' => new SafeCurlHandler(), 'defaults' => ['cookies' => $this->cookieJar]]);
+        $client->getEmitter()->attach($this->authenticatorSubscriber);
+
+        return $client;
+    }
+}