diff options
Diffstat (limited to 'src/Wallabag/CoreBundle/Helper/HttpClientFactory.php')
-rw-r--r-- | src/Wallabag/CoreBundle/Helper/HttpClientFactory.php | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/src/Wallabag/CoreBundle/Helper/HttpClientFactory.php b/src/Wallabag/CoreBundle/Helper/HttpClientFactory.php new file mode 100644 index 00000000..8891887b --- /dev/null +++ b/src/Wallabag/CoreBundle/Helper/HttpClientFactory.php | |||
@@ -0,0 +1,54 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Wallabag\CoreBundle\Helper; | ||
4 | |||
5 | use Graby\Ring\Client\SafeCurlHandler; | ||
6 | use GuzzleHttp\Client; | ||
7 | use GuzzleHttp\Cookie\CookieJar; | ||
8 | use GuzzleHttp\Event\SubscriberInterface; | ||
9 | |||
10 | /** | ||
11 | * Builds and configures the Guzzle HTTP client. | ||
12 | */ | ||
13 | class HttpClientFactory | ||
14 | { | ||
15 | /** @var \GuzzleHttp\Event\SubscriberInterface */ | ||
16 | private $authenticatorSubscriber; | ||
17 | |||
18 | /** @var \GuzzleHttp\Cookie\CookieJar */ | ||
19 | private $cookieJar; | ||
20 | |||
21 | private $restrictedAccess; | ||
22 | |||
23 | /** | ||
24 | * HttpClientFactory constructor. | ||
25 | * | ||
26 | * @param \GuzzleHttp\Event\SubscriberInterface $authenticatorSubscriber | ||
27 | * @param \GuzzleHttp\Cookie\CookieJar $cookieJar | ||
28 | * @param string $restrictedAccess this param is a kind of boolean. Values: 0 or 1 | ||
29 | */ | ||
30 | public function __construct(SubscriberInterface $authenticatorSubscriber, CookieJar $cookieJar, $restrictedAccess) | ||
31 | { | ||
32 | $this->authenticatorSubscriber = $authenticatorSubscriber; | ||
33 | $this->cookieJar = $cookieJar; | ||
34 | $this->restrictedAccess = $restrictedAccess; | ||
35 | } | ||
36 | |||
37 | /** | ||
38 | * @return \GuzzleHttp\Client|null | ||
39 | */ | ||
40 | public function buildHttpClient() | ||
41 | { | ||
42 | if (0 === (int) $this->restrictedAccess) { | ||
43 | return null; | ||
44 | } | ||
45 | |||
46 | // we clear the cookie to avoid websites who use cookies for analytics | ||
47 | $this->cookieJar->clear(); | ||
48 | // need to set the (shared) cookie jar | ||
49 | $client = new Client(['handler' => new SafeCurlHandler(), 'defaults' => ['cookies' => $this->cookieJar]]); | ||
50 | $client->getEmitter()->attach($this->authenticatorSubscriber); | ||
51 | |||
52 | return $client; | ||
53 | } | ||
54 | } | ||