[Solar-svn] Revision 3219

pmjones at solarphp.com pmjones at solarphp.com
Thu Jun 12 17:10:15 CDT 2008


Solar_Http_Request_Adapter: [CHG] In the interest of setting header values in an array loop, the setHeader() method no longer prevents setting of content-type, http, referer, or user-agent, and instead calls the related methods internally.  Still prevents setting of cookie values, though.


Modified: trunk/Solar/Http/Request/Adapter.php
===================================================================
--- trunk/Solar/Http/Request/Adapter.php	2008-06-12 19:07:23 UTC (rev 3218)
+++ trunk/Solar/Http/Request/Adapter.php	2008-06-12 22:10:15 UTC (rev 3219)
@@ -486,17 +486,9 @@
      * 
      * Sets a header value in $this->_headers for sending at fetch() time.
      * 
-     * This method will not set certain headers; use the provided methods
+     * This method will not set cookie values; use setCookie() or setCookies()
      * instead.
      * 
-     * | Header        | Method                                 |
-     * | ------------- | -------------------------------------- |
-     * | Content-Type  | [[setContentType()]], [[setCharset()]] |
-     * | Cookie        | [[setCookie()]]                        |
-     * | HTTP          | [[setVersion()]]                       |
-     * | Referer       | [[setReferer()]]                       |
-     * | User-Agent    | [[setUserAgent()]]                     |
-     * 
      * @param string $key The header label, such as "X-Foo-Bar".
      * 
      * @param string $val The value for the header.  When null or false,
@@ -513,21 +505,27 @@
      */
     public function setHeader($key, $val, $replace = true)
     {
-        // normalize the header key
+        // normalize the header key and keep a lower-case version
         $key = Solar_Mime::headerLabel($key);
+        $low = strtolower($key);
         
-        // disallow certain headers
-        $lower = strtolower($key);
-        $notok = array(
-            'content-type'  => 'setContentType()',
-            'cookie'        => 'setCookie()',
-            'http'          => 'setVersion()',
-            'referer'       => 'setReferer()',
-            'user-agent'    => 'setUserAgent()',
+        // use special methods when available
+        $special = array(
+            'content-type'  => 'setContentType',
+            'http'          => 'setVersion',
+            'referer'       => 'setReferer',
+            'user-agent'    => 'setUserAgent',
         );
-        if (! empty($notok[$lower])) {
+        
+        if (! empty($special[$low])) {
+            $method = $special[$low];
+            return $this->$method($val);
+        }
+        
+        // don't allow setting of cookies
+        if ($low == 'cookie') {
             throw $this->_exception('ERR_USE_OTHER_METHOD', array(
-                $lower => $notok[$lower],
+                'cookie' => 'setCookie() or setCookies()',
             ));
         }
         




More information about the Solar-svn mailing list