/** * testRequestPut * * @return void */ public function testRequestPut() { $request = $this->createRequest(); $request = $request->withUri(new PsrUri(ASIKA_HTTP_TEST_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']); }
/** * Return an instance with the specified query string. * * This method MUST retain the state of the current instance, and return * an instance that contains the specified query string. * * Users can provide both encoded and decoded query characters. * Implementations ensure the correct encoding as outlined in getQuery(). * * An empty query string value is equivalent to removing the query string. * * @param string|array $query The query string to use with the new instance. * * @return static A new instance with the specified query string. * @throws \InvalidArgumentException for invalid query strings. */ public function withQuery($query) { if (is_array($query)) { $query = UriHelper::buildQuery($query); } $query = UriHelper::filterQuery($query); $new = clone $this; $new->vars = UriHelper::parseQuery($query); $new->query = $query; return $new; }
/** * 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; }
/** * Method to test patch(). * * @return void * * @covers Asika\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()); }