Kaynağa Gözat

Improvement ZF-3288: "Custom User-Agent support in Zend_XmlRpc_Client requests"

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@17752 44c647ce-9c0f-0410-b52a-842ac1e357ba
lars 16 yıl önce
ebeveyn
işleme
1f0a0d4634

+ 4 - 1
library/Zend/XmlRpc/Client.php

@@ -268,10 +268,13 @@ class Zend_XmlRpc_Client
 
         $http->setHeaders(array(
             'Content-Type: text/xml; charset=utf-8',
-            'User-Agent: Zend_XmlRpc_Client',
             'Accept: text/xml',
         ));
 
+        if ($http->getHeader('user-agent') === null) {
+            $http->setHeaders(array('User-Agent: Zend_XmlRpc_Client'));
+        }
+
         $xml = $this->_lastRequest->__toString();
         $http->setRawData($xml);
         $httpResponse = $http->request(Zend_Http_Client::POST);

+ 26 - 3
tests/Zend/XmlRpc/ClientTest.php

@@ -629,10 +629,33 @@ class Zend_XmlRpc_ClientTest extends PHPUnit_Framework_TestCase
 
         $this->assertEquals($baseUri, $uri);
     }
-    
-    
+
+    /**
+     * @group ZF-3288
+     */
+    public function testCustomHttpClientUserAgentIsNotOverridden()
+    {
+        $this->assertNull(
+            $this->httpClient->getHeader('user-agent'),
+            'UA is null if no request was made'
+        );
+        $this->setServerResponseTo(true);
+        $this->assertTrue($this->xmlrpcClient->call('method'));
+        $this->assertSame(
+            'Zend_XmlRpc_Client',
+            $this->httpClient->getHeader('user-agent'),
+            'If no custom UA is set, set Zend_XmlRpc_Client'
+        );
+
+        $expectedUserAgent = 'Zend_XmlRpc_Client (custom)';
+        $this->httpClient->setHeaders(array('user-agent' => $expectedUserAgent));
+
+        $this->setServerResponseTo(true);
+        $this->assertTrue($this->xmlrpcClient->call('method'));
+        $this->assertSame($expectedUserAgent, $this->httpClient->getHeader('user-agent'));
+    }
+
     // Helpers
-    
     public function setServerResponseTo($nativeVars)
     {
         $response = $this->getServerResponseFor($nativeVars);