From: Jan Schneider Date: Tue, 6 Jul 2010 18:29:19 +0000 (+0200) Subject: Use a factory instead of a binder for Horde_Http_Client. X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=ae1d6ce5e8d61aba5949fd83f613943d66cbcab8;p=horde.git Use a factory instead of a binder for Horde_Http_Client. --- diff --git a/framework/Core/lib/Horde/Core/Binder/Facebook.php b/framework/Core/lib/Horde/Core/Binder/Facebook.php index ba2be04a0..e69af3f6e 100644 --- a/framework/Core/lib/Horde/Core/Binder/Facebook.php +++ b/framework/Core/lib/Horde/Core/Binder/Facebook.php @@ -18,7 +18,7 @@ class Horde_Core_Binder_Facebook implements Horde_Injector_Binder $secret = $conf['facebook']['secret']; /* Create required objects */ - $context = array('http_client' => $injector->getInstance('Horde_Http_Client'), + $context = array('http_client' => $injector->getInstance('Horde_Http_Client')->getClient(), 'http_request' => $injector->getInstance('Horde_Controller_Request_Http')); return new Horde_Service_Facebook($apikey, $secret, $context); diff --git a/framework/Core/lib/Horde/Core/Binder/HttpClient.php b/framework/Core/lib/Horde/Core/Binder/HttpClient.php index 235ceb746..f42f81265 100644 --- a/framework/Core/lib/Horde/Core/Binder/HttpClient.php +++ b/framework/Core/lib/Horde/Core/Binder/HttpClient.php @@ -7,22 +7,7 @@ class Horde_Core_Binder_HttpClient implements Horde_Injector_Binder { public function create(Horde_Injector $injector) { - global $conf; - - $client_opts = array(); - - if (!empty($conf['http']['proxy']['proxy_host'])) { - $client_opts['request.proxyServer'] = $conf['http']['proxy']['proxy_host']; - $client_opts['request.proxyPort'] = $conf['http']['proxy']['proxy_port']; - if (!empty($conf['http']['proxy']['proxy_user'])) { - $client_opts['request.proxyUsername'] = $conf['http']['proxy']['proxy_user']; - if (!empty($conf['http']['proxy']['proxy_pass'])) { - $client_opts['request.proxyPassword'] = $conf['http']['proxy']['proxy_pass']; - } - } - } - - return new Horde_Http_Client($client_opts); + return new Horde_Core_Factory_HttpClient($injector); } public function equals(Horde_Injector_Binder $binder) diff --git a/framework/Core/lib/Horde/Core/Binder/Twitter.php b/framework/Core/lib/Horde/Core/Binder/Twitter.php index c032111e0..b2c44855f 100644 --- a/framework/Core/lib/Horde/Core/Binder/Twitter.php +++ b/framework/Core/lib/Horde/Core/Binder/Twitter.php @@ -35,7 +35,7 @@ class Horde_Core_Binder_Twitter implements Horde_Injector_Binder //$twitter->setCache($injector->getInstance('Horde_Cache')); $twitter->setLogger($injector->getInstance('Horde_Log_Logger')); - $twitter->setHttpClient($GLOBALS['injector']->getInstance('Horde_Http_Client')); + $twitter->setHttpClient($GLOBALS['injector']->getInstance('Horde_Http_Client')->getClient()); return $twitter; } else { diff --git a/framework/Core/lib/Horde/Core/Factory/HttpClient.php b/framework/Core/lib/Horde/Core/Factory/HttpClient.php new file mode 100644 index 000000000..9530b1870 --- /dev/null +++ b/framework/Core/lib/Horde/Core/Factory/HttpClient.php @@ -0,0 +1,43 @@ +_injector = $injector; + } + + public function getClient(array $opts = array()) + { + global $conf; + + $client_opts = array(); + if (!empty($conf['http']['proxy']['proxy_host'])) { + $client_opts['request.proxyServer'] = $conf['http']['proxy']['proxy_host']; + $client_opts['request.proxyPort'] = $conf['http']['proxy']['proxy_port']; + if (!empty($conf['http']['proxy']['proxy_user'])) { + $client_opts['request.proxyUsername'] = $conf['http']['proxy']['proxy_user']; + if (!empty($conf['http']['proxy']['proxy_pass'])) { + $client_opts['request.proxyPassword'] = $conf['http']['proxy']['proxy_pass']; + } + } + } + + return new Horde_Http_Client(array_merge($client_opts, $opts)); + } +} \ No newline at end of file diff --git a/framework/Core/package.xml b/framework/Core/package.xml index 79406433d..e821adaba 100644 --- a/framework/Core/package.xml +++ b/framework/Core/package.xml @@ -115,6 +115,7 @@ Application Framework. + @@ -327,6 +328,7 @@ Application Framework. + diff --git a/horde/lib/Block/feed/reader.php b/horde/lib/Block/feed/reader.php index d2b9e8d01..3c5bde956 100644 --- a/horde/lib/Block/feed/reader.php +++ b/horde/lib/Block/feed/reader.php @@ -21,11 +21,10 @@ class Horde_Block_Horde_feed_reader { } try { - if (!empty($GLOBALS['conf']['http']['proxy']['proxy_host'])) { - Horde_Feed::setHttpClient($GLOBALS['injector']->getInstance('Horde_Http_Client')); - } - - $feed = Horde_Feed::readUri($uri); + $client = $GLOBALS['injector'] + ->getInstance('Horde_Http_Client') + ->getClient(); + $feed = Horde_Feed::readUri($uri, $client); $GLOBALS['cache']->set($key, serialize($feed)); return $feed; } catch (Exception $e) { diff --git a/imp/lib/Compose.php b/imp/lib/Compose.php index ca50e0595..a9a56305a 100644 --- a/imp/lib/Compose.php +++ b/imp/lib/Compose.php @@ -2269,7 +2269,9 @@ class IMP_Compose return $mime_part; } - $client = $GLOBALS['injector']->getInstance('Horde_Http_Client'); + $client = $GLOBALS['injector'] + ->getInstance('Horde_Http_Client') + ->getClient(); $img_data = $img_parts = array(); /* Go through list of results, download the image, and create diff --git a/jonah/lib/Jonah.php b/jonah/lib/Jonah.php index db56770ea..c26a29b5c 100644 --- a/jonah/lib/Jonah.php +++ b/jonah/lib/Jonah.php @@ -44,7 +44,9 @@ class Jonah { global $conf; - $http = $GLOBALS['injector']->getInstance('Horde_Http_Client'); + $http = $GLOBALS['injector'] + ->getInstance('Horde_Http_Client') + ->getClient(); try { $response = $http->get($url);