/** * @param string $url * @param string $method * @param array $userOpts * @param array $defaultOpts * @param array $userHeaders * @param array $defaultHeaders * @param string|array|object $requestBody * @return CurlPlusResponse */ private static function _execute($url, $method, array $userOpts, array $defaultOpts, array $userHeaders, array $defaultHeaders = array(), $requestBody = null) { self::$_client->initialize($url); switch ($method) { case 'GET': $defaultOpts[CURLOPT_HTTPGET] = true; break; case 'POST': $defaultOpts[CURLOPT_POST] = true; break; default: $defaultOpts[CURLOPT_CUSTOMREQUEST] = $method; } $bodyType = gettype($requestBody); if (null !== $requestBody && in_array($method, self::$_methodsWithBody) && !isset($userOpts[CURLOPT_POSTFIELDS])) { if ('array' === $bodyType || 'object' === $bodyType) { $requestBody = http_build_query($requestBody); } $defaultOpts[CURLOPT_POSTFIELDS] = $requestBody; } self::$_client->setCurlOpts($userOpts + $defaultOpts); self::$_client->setRequestHeaders($userHeaders + $defaultHeaders); return self::$_client->execute(true); }
/** * @covers \DCarbone\CurlPlus\CurlPlusClient::setRequestHeaders * @covers \DCarbone\CurlPlus\CurlPlusClient::getRequestHeaders * @depends testCanAddRequestHeaderString * @param \DCarbone\CurlPlus\CurlPlusClient $curlClient */ public function testCanOverwriteRequestHeaderArray(\DCarbone\CurlPlus\CurlPlusClient $curlClient) { $curlClient->setRequestHeaders(array('Content-Type' => 'text/xml')); $requestHeaders = $curlClient->getRequestHeaders(); $this->assertInternalType('array', $requestHeaders); $this->assertCount(1, $requestHeaders); $this->assertArrayHasKey('Content-Type', $requestHeaders); $this->assertContains('text/xml', $requestHeaders); }