Browse Source

[Network][Http] Add OPTIONS/TRACE verb support

Eric GELOEN 11 years ago
parent
commit
fbfc9fa8dd

+ 30 - 0
src/Network/Http/Client.php

@@ -255,6 +255,36 @@ class Client
     }
 
     /**
+     * Do an OPTIONS request.
+     *
+     * @param string $url The url or path you want to request.
+     * @param mixed $data The request data you want to send.
+     * @param array $options Additional options for the request.
+     * @return \Cake\Network\Http\Response
+     */
+    public function options($url, $data = [], array $options = [])
+    {
+        $options = $this->_mergeOptions($options);
+        $url = $this->buildUrl($url, [], $options);
+        return $this->_doRequest(Request::METHOD_OPTIONS, $url, $data, $options);
+    }
+
+    /**
+     * Do a TRACE request.
+     *
+     * @param string $url The url or path you want to request.
+     * @param mixed $data The request data you want to send.
+     * @param array $options Additional options for the request.
+     * @return \Cake\Network\Http\Response
+     */
+    public function trace($url, $data = [], array $options = [])
+    {
+        $options = $this->_mergeOptions($options);
+        $url = $this->buildUrl($url, [], $options);
+        return $this->_doRequest(Request::METHOD_TRACE, $url, $data, $options);
+    }
+
+    /**
      * Do a DELETE request.
      *
      * @param string $url The url or path you want to request.

+ 14 - 0
src/Network/Http/Message.php

@@ -107,6 +107,20 @@ class Message
     const METHOD_PATCH = 'PATCH';
 
     /**
+     * HTTP OPTIONS method
+     *
+     * @var string
+     */
+    const METHOD_OPTIONS = 'OPTIONS';
+
+    /**
+     * HTTP TRACE method
+     *
+     * @var string
+     */
+    const METHOD_TRACE = 'TRACE';
+
+    /**
      * HTTP HEAD method
      *
      * @var string

+ 2 - 0
tests/TestCase/Network/Http/ClientTest.php

@@ -319,6 +319,8 @@ class ClientTest extends TestCase
             [Request::METHOD_PUT],
             [Request::METHOD_DELETE],
             [Request::METHOD_PATCH],
+            [Request::METHOD_OPTIONS],
+            [Request::METHOD_TRACE],
         ];
     }
     /**