diff --git a/src/Curl/CurlClient.php b/src/Curl/CurlClient.php index b71be606c29223dedb6d1687c9b9c03ad90ab529..17939aa859c0bd468279d495cc81fc595b37e2b1 100644 --- a/src/Curl/CurlClient.php +++ b/src/Curl/CurlClient.php @@ -5,8 +5,8 @@ namespace iFirmaVendor\WPDesk\HttpClient\Curl; use iFirmaVendor\WPDesk\HttpClient\HttpClient; use iFirmaVendor\WPDesk\HttpClient\HttpClientResponse; use iFirmaVendor\WPDesk\HttpClient\HttpClientRequestException; -class CurlClient implements \iFirmaVendor\WPDesk\HttpClient\HttpClient -{ + +class CurlClient implements \iFirmaVendor\WPDesk\HttpClient\HttpClient { /** @var resource */ private $curlResource; /** @var string|null|boolean */ @@ -15,69 +15,72 @@ class CurlClient implements \iFirmaVendor\WPDesk\HttpClient\HttpClient private $httpResponseCode; /** @var array */ private $headers = array(); + /** * @param string $url * @param string $body - * @param array $headers - * @param int $timeOut + * @param array $headers + * @param int $timeOut + * * @return HttpClientResponse * @throws HttpClientRequestException */ - public function get($url, $body, array $headers, $timeOut) - { - return $this->send($url, 'GET', $body, $headers, $timeOut); + public function get( $url, $body, array $headers, $timeOut ) { + return $this->send( $url, 'GET', $body, $headers, $timeOut ); } + /** * @param string $url * @param string $method * @param string $body - * @param array $headers - * @param int $timeOut + * @param array $headers + * @param int $timeOut + * * @return HttpClientResponse * @throws HttpClientRequestException */ - public function send($url, $method, $body, array $headers, $timeOut) - { + public function send( $url, $method, $body, array $headers, $timeOut ) { $this->initResource(); try { - $this->prepareConnection($url, $method, $body, $headers, $timeOut); + $this->prepareConnection( $url, $method, $body, $headers, $timeOut ); $this->sendRequest(); $this->throwExceptionIfError(); $this->closeConnection(); + return $this->prepareResponse(); - } catch (\Exception $e) { + } catch ( \Exception $e ) { $this->closeConnection(); - if ($e instanceof \iFirmaVendor\WPDesk\HttpClient\HttpClientRequestException) { + if ( $e instanceof \iFirmaVendor\WPDesk\HttpClient\HttpClientRequestException ) { throw $e; } - throw \iFirmaVendor\WPDesk\HttpClient\Curl\CurlExceptionFactory::createDefaultException($e->getMessage(), $e->getCode(), $e); + throw \iFirmaVendor\WPDesk\HttpClient\Curl\CurlExceptionFactory::createDefaultException( $e->getMessage(), $e->getCode(), $e ); } } - private function initResource() - { + + private function initResource() { $this->curlResource = \curl_init(); } + /** * Opens a new curl connection. * - * @param string $url The endpoint to send the request to. - * @param string $method The request method. - * @param string $body The body of the request. - * @param array $headers The request headers. - * @param int $timeOut The timeout in seconds for the request. + * @param string $url The endpoint to send the request to. + * @param string $method The request method. + * @param string $body The body of the request. + * @param array $headers The request headers. + * @param int $timeOut The timeout in seconds for the request. */ - private function prepareConnection($url, $method, $body, array $headers, $timeOut) - { + private function prepareConnection( $url, $method, $body, array $headers, $timeOut ) { $options = [ - \CURLOPT_CUSTOMREQUEST => $method, - \CURLOPT_HTTPHEADER => $this->compileRequestHeaders($headers), - \CURLOPT_URL => $url, + \CURLOPT_CUSTOMREQUEST => $method, + \CURLOPT_HTTPHEADER => $this->compileRequestHeaders( $headers ), + \CURLOPT_URL => $url, \CURLOPT_CONNECTTIMEOUT => 10, - \CURLOPT_TIMEOUT => $timeOut, + \CURLOPT_TIMEOUT => $timeOut, \CURLOPT_RETURNTRANSFER => \true, // Return response as string - \CURLOPT_HEADER => \false, + \CURLOPT_HEADER => \false, // Enable header processing \CURLOPT_SSL_VERIFYHOST => 2, \CURLOPT_SSL_VERIFYPEER => \true, @@ -88,11 +91,12 @@ class CurlClient implements \iFirmaVendor\WPDesk\HttpClient\HttpClient return $len; } ]; - if ($method !== "GET") { - $options[\CURLOPT_POSTFIELDS] = $body; + if ( $method !== "GET" ) { + $options[ \CURLOPT_POSTFIELDS ] = $body; } - \curl_setopt_array($this->curlResource, $options); + \curl_setopt_array( $this->curlResource, $options ); } + /** * Compiles the request headers into a curl-friendly format. * @@ -100,94 +104,99 @@ class CurlClient implements \iFirmaVendor\WPDesk\HttpClient\HttpClient * * @return array */ - private function compileRequestHeaders(array $headers) - { + private function compileRequestHeaders( array $headers ) { $return = []; - foreach ($headers as $key => $value) { + foreach ( $headers as $key => $value ) { $return[] = $key . ': ' . $value; } + return $return; } + /** * Send the request and get the raw response from curl */ - private function sendRequest() - { - $this->rawResponse = \curl_exec($this->curlResource); + private function sendRequest() { + $this->rawResponse = \curl_exec( $this->curlResource ); $this->httpResponseCode = $this->getHttpResponseCode(); } + /** @return int */ - private function getHttpResponseCode() - { - return \intval(\curl_getinfo($this->curlResource, \CURLINFO_HTTP_CODE)); + private function getHttpResponseCode() { + return \intval( \curl_getinfo( $this->curlResource, \CURLINFO_HTTP_CODE ) ); } - private function throwExceptionIfError() - { - $errorNumber = \curl_errno($this->curlResource); - if ($errorNumber === 0) { + + private function throwExceptionIfError() { + $errorNumber = \curl_errno( $this->curlResource ); + if ( $errorNumber === 0 ) { return; } - $errorMessage = \curl_error($this->curlResource); - throw \iFirmaVendor\WPDesk\HttpClient\Curl\CurlExceptionFactory::createCurlException($errorMessage, $errorNumber); + $errorMessage = \curl_error( $this->curlResource ); + throw \iFirmaVendor\WPDesk\HttpClient\Curl\CurlExceptionFactory::createCurlException( $errorMessage, $errorNumber ); } + /** * Closes an existing curl connection */ - private function closeConnection() - { - \curl_close($this->curlResource); + private function closeConnection() { + \curl_close( $this->curlResource ); $this->curlResource = null; } - private function prepareResponse() - { - list($rawHeaders, $rawBody) = $this->extractResponseHeadersAndBody(); - return new \iFirmaVendor\WPDesk\HttpClient\HttpClientResponse($rawHeaders, $rawBody, $this->httpResponseCode); + + private function prepareResponse() { + list( $rawHeaders, $rawBody ) = $this->extractResponseHeadersAndBody(); + + return new \iFirmaVendor\WPDesk\HttpClient\HttpClientResponse( $rawHeaders, $rawBody, $this->httpResponseCode ); } + /** * Extracts the headers and the body into a two-part array * * @return array */ - private function extractResponseHeadersAndBody() - { - $rawBody = \trim( $this->rawResponse ); - $rawHeaders = \trim(implode( "\r\n",$this->headers )); + private function extractResponseHeadersAndBody() { + $rawBody = \trim( $this->rawResponse ); + $rawHeaders = \trim( implode( "\r\n", $this->headers ) ); + return [ $rawHeaders, $rawBody ]; } + /** * @param string $url * @param string $body - * @param array $headers - * @param int $timeOut + * @param array $headers + * @param int $timeOut + * * @return HttpClientResponse * @throws HttpClientRequestException */ - public function post($url, $body, array $headers, $timeOut) - { - return $this->send($url, 'POST', $body, $headers, $timeOut); + public function post( $url, $body, array $headers, $timeOut ) { + return $this->send( $url, 'POST', $body, $headers, $timeOut ); } + /** * @param string $url * @param string $body - * @param array $headers - * @param int $timeOut + * @param array $headers + * @param int $timeOut + * * @return HttpClientResponse * @throws HttpClientRequestException */ - public function delete($url, $body, array $headers, $timeOut) - { - return $this->send($url, 'DELETE', $body, $headers, $timeOut); + public function delete( $url, $body, array $headers, $timeOut ) { + return $this->send( $url, 'DELETE', $body, $headers, $timeOut ); } + /** * @param string $url * @param string $body - * @param array $headers - * @param int $timeOut + * @param array $headers + * @param int $timeOut + * * @return HttpClientResponse * @throws HttpClientRequestException */ - public function put($url, $body, array $headers, $timeOut) - { - return $this->send($url, 'PUT', $body, $headers, $timeOut); + public function put( $url, $body, array $headers, $timeOut ) { + return $this->send( $url, 'PUT', $body, $headers, $timeOut ); } } \ No newline at end of file