summaryrefslogtreecommitdiffstats
path: root/lib/Config/FetcherConfig.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Config/FetcherConfig.php')
-rw-r--r--lib/Config/FetcherConfig.php118
1 files changed, 118 insertions, 0 deletions
diff --git a/lib/Config/FetcherConfig.php b/lib/Config/FetcherConfig.php
new file mode 100644
index 000000000..55603c47c
--- /dev/null
+++ b/lib/Config/FetcherConfig.php
@@ -0,0 +1,118 @@
+<?php
+/**
+ * Nextcloud - News
+ *
+ * This file is licensed under the Affero General Public License version 3 or
+ * later. See the COPYING file.
+ *
+ * @author Alessandro Cosentino <cosenal@gmail.com>
+ * @author Bernhard Posselt <dev@bernhard-posselt.com>
+ * @copyright 2012 Alessandro Cosentino
+ * @copyright 2012-2014 Bernhard Posselt
+ */
+
+namespace OCA\News\Config;
+
+use FeedIo\Adapter\ClientInterface;
+use \GuzzleHttp\Client;
+use \FeedIo\Adapter\Guzzle\Client as FeedIoClient;
+
+/**
+ * Class FetcherConfig
+ *
+ * @package OCA\News\Config
+ */
+class FetcherConfig
+{
+ protected $client_timeout;
+ protected $proxy;
+
+ /**
+ * Configure a guzzle client
+ *
+ * @return ClientInterface Legacy client to guzzle.
+ */
+ public function getClient()
+ {
+ if (!class_exists('GuzzleHttp\Collection')) {
+ $config = [
+ 'timeout' => $this->getClientTimeout(),
+ ];
+
+ if (!empty($this->proxy)) {
+ $config['proxy'] = $this->proxy;
+ }
+
+ $guzzle = new Client();
+ $client = new FeedIoClient($guzzle);
+
+ return $client;
+ }
+
+ $config = [
+ 'request.options' => [
+ 'timeout' => $this->getClientTimeout(),
+ ],
+ ];
+
+ if (!empty($this->proxy)) {
+ $config['request.options']['proxy'] = $this->proxy;
+ }
+
+ $guzzle = new Client($config);
+ return new LegacyGuzzleClient($guzzle);
+ }
+
+ /**
+ * Set a timeout for the client
+ *
+ * @param int $timeout The timeout
+ *
+ * @return self
+ */
+ public function setClientTimeout($timeout)
+ {
+ $this->client_timeout = $timeout;
+
+ return $this;
+ }
+
+ /**
+ * Get the client timeout.
+ *
+ * @return mixed
+ */
+ public function getClientTimeout()
+ {
+ return $this->client_timeout;
+ }
+
+ /**
+ * Set the proxy
+ *
+ * @param \OCA\News\Utility\ProxyConfigParser $proxy The proxy to set.
+ *
+ * @return self
+ */
+ public function setProxy($proxy)
+ {
+ // proxy settings
+ $proxySettings = $proxy->parse();
+ $host = $proxySettings['host'];
+ $port = $proxySettings['port'];
+ $user = $proxySettings['user'];
+ $password = $proxySettings['password'];
+
+ $proxy_string = 'https://';
+ if (!empty($user)) {
+ $proxy_string .= $user . ':' . $password . '@';
+ }
+ $proxy_string .= $host;
+ if (!empty($port)) {
+ $proxy_string .= ':' . $port;
+ }
+ $this->proxy = $proxy_string;
+
+ return $this;
+ }
+}