|
@@ -20,6 +20,7 @@ class Builder {
|
|
|
'POST' => false,
|
|
|
'HTTPHEADER' => array(),
|
|
|
'SSL_VERIFYPEER' => false,
|
|
|
+ 'HEADER' => false,
|
|
|
);
|
|
|
|
|
|
/** @var array $packageOptions Array with options that are not specific to cURL but are used by the package */
|
|
@@ -474,6 +475,13 @@ class Builder {
|
|
|
// Send the request
|
|
|
$response = curl_exec( $this->curlObject );
|
|
|
|
|
|
+ $response_header = null;
|
|
|
+ if( $this->curlOptions[ 'HEADER' ]) {
|
|
|
+ $header_size = curl_getinfo( $this->curlObject, CURLINFO_HEADER_SIZE );
|
|
|
+ $response_header = substr( $response, 0, $header_size );
|
|
|
+ $response = substr( $response, $header_size );
|
|
|
+ }
|
|
|
+
|
|
|
// Capture additional request information if needed
|
|
|
$responseData = array();
|
|
|
if( $this->packageOptions[ 'responseObject' ] || $this->packageOptions[ 'responseArray' ] ) {
|
|
@@ -501,7 +509,18 @@ class Builder {
|
|
|
}
|
|
|
|
|
|
// Return the result
|
|
|
- return $this->returnResponse( $response, $responseData );
|
|
|
+ return $this->returnResponse( $response_header, $response, $responseData );
|
|
|
+ }
|
|
|
+
|
|
|
+ protected function parseHeader($response_header) {
|
|
|
+ $res = array_filter( array_map( function( $x ) {
|
|
|
+ $arr = array_map( "trim", explode( ":", $x, 2 ) );
|
|
|
+ if( sizeof($arr) == 2 ) {
|
|
|
+ return [$arr[0] => $arr[1]];
|
|
|
+ }
|
|
|
+ }, array_filter( array_map( "trim", explode( "\r\n", $response_header ) ) ) ) );
|
|
|
+
|
|
|
+ return array_collapse($res);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -509,7 +528,7 @@ class Builder {
|
|
|
* @param array $responseData Additional response information
|
|
|
* @return mixed
|
|
|
*/
|
|
|
- protected function returnResponse($content, array $responseData = array())
|
|
|
+ protected function returnResponse($header, $content, array $responseData = array())
|
|
|
{
|
|
|
if( !$this->packageOptions[ 'responseObject' ] && !$this->packageOptions[ 'responseArray' ] ) {
|
|
|
return $content;
|
|
@@ -522,6 +541,9 @@ class Builder {
|
|
|
if( array_key_exists('errorMessage', $responseData) ) {
|
|
|
$object->error = $responseData[ 'errorMessage' ];
|
|
|
}
|
|
|
+ if( $this->curlOptions[ 'HEADER' ] ) {
|
|
|
+ $object->header = $this->parseHeader( $header );
|
|
|
+ }
|
|
|
|
|
|
if( $this->packageOptions[ 'responseObject' ] ) {
|
|
|
return $object;
|
|
@@ -575,4 +597,12 @@ class Builder {
|
|
|
return $this->curlOptions[ 'URL' ] .= $parameterString;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Get output header
|
|
|
+ *
|
|
|
+ * @return Builder
|
|
|
+ */
|
|
|
+ public function returnResponseHeader() {
|
|
|
+ return $this->withCurlOption( 'HEADER', TRUE );
|
|
|
+ }
|
|
|
}
|