예제 #1
0
 /**
  * Prepare Request object to send request.
  *
  * @param   RequestInterface  $request  The Psr Request object.
  * @param   string            $method   The method type.
  * @param   string|object     $url      The URL to request, may be string or Uri object.
  * @param   mixed             $data     The request body data, can be an array of POST data.
  * @param   array             $headers  The headers array.
  *
  * @return  RequestInterface
  */
 protected function prepareRequest(RequestInterface $request, $method, $url, $data, $headers)
 {
     $url = (string) $url;
     // If is GET, we merge data into URL.
     if (strtoupper($method) == 'GET' && is_array($data)) {
         $url = new Uri($url);
         foreach ($data as $k => $v) {
             $url->setVar($k, $v);
         }
         $url = (string) $url;
         $data = null;
     }
     // If not GET, convert data to query string.
     if (is_array($data)) {
         $data = UriHelper::buildQuery($data);
     }
     /** @var RequestInterface $request */
     $request->getBody()->write((string) $data);
     $request = $request->withRequestTarget((string) new PsrUri($url))->withMethod($method);
     // Set global headers
     foreach ((array) $this->getOption('headers') as $key => $value) {
         $request = $request->withHeader($key, $value);
     }
     // Override with this method
     foreach ($headers as $key => $value) {
         $request = $request->withHeader($key, $value);
     }
     return $request;
 }
예제 #2
0
 /**
  * Method to test patch().
  *
  * @return void
  *
  * @covers Windwalker\Http\HttpClient::patch
  */
 public function testPatch()
 {
     $url = 'http://example.com/?foo=bar';
     $data = array('flower' => 'sakura');
     $headers = array('X-Foo' => 'Bar');
     $this->instance->patch($url, $data, $headers);
     $this->assertEquals('PATCH', $this->transport->request->getMethod());
     $this->assertEquals($url, $this->transport->request->getRequestTarget());
     $this->assertEquals('Bar', $this->transport->request->getHeaderLine('X-Foo'));
     $this->assertEquals(UriHelper::buildQuery($data), $this->transport->request->getBody()->__toString());
 }
 /**
  * testRequestPut
  *
  * @return  void
  */
 public function testRequestPut()
 {
     $request = $this->createRequest();
     $request = $request->withUri(new PsrUri(WINDWALKER_TEST_HTTP_URL))->withMethod('PUT');
     $request->getBody()->write(UriHelper::buildQuery(array('foo' => 'bar')));
     $response = $this->instance->request($request);
     $data = json_decode($response->getBody()->getContents(), true);
     $this->assertEquals(array('foo' => 'bar'), $data['data']);
     $this->assertEquals('PUT', $data['_SERVER']['REQUEST_METHOD']);
 }