Commit e9946015 authored by Dries's avatar Dries
Browse files

- Patch #345591 by pwolanin, JacobSingh: drupal_http_request() should return...

- Patch #345591 by pwolanin, JacobSingh: drupal_http_request() should return the original status message and protocol.
parent 453d7c56
...@@ -426,12 +426,16 @@ function drupal_access_denied() { ...@@ -426,12 +426,16 @@ function drupal_access_denied() {
* - code * - code
* An integer containing the response status code, or the error code if * An integer containing the response status code, or the error code if
* an error occurred. * an error occurred.
* - protocol
* The response protocol (e.g. HTTP/1.1 or HTTP/1.0).
* - status_message
* The status message from the response, if a response was received.
* - redirect_code * - redirect_code
* If redirected, an integer containing the initial response status code. * If redirected, an integer containing the initial response status code.
* - redirect_url * - redirect_url
* If redirected, a string containing the redirection location. * If redirected, a string containing the redirection location.
* - error * - error
* If an error occurred, the error message. * If an error occurred, the error message. Otherwise not set.
* - headers * - headers
* An array containing the response headers as name/value pairs. * An array containing the response headers as name/value pairs.
* - data * - data
...@@ -550,7 +554,10 @@ function drupal_http_request($url, array $options = array()) { ...@@ -550,7 +554,10 @@ function drupal_http_request($url, array $options = array()) {
$response = preg_split("/\r\n|\n|\r/", $response); $response = preg_split("/\r\n|\n|\r/", $response);
// Parse the response status line. // Parse the response status line.
list($protocol, $code, $status) = explode(' ', trim(array_shift($response)), 3); list($protocol, $code, $status_message) = explode(' ', trim(array_shift($response)), 3);
$result->protocol = $protocol;
$result->status_message = $status_message;
$result->headers = array(); $result->headers = array();
// Parse the response headers. // Parse the response headers.
...@@ -632,7 +639,7 @@ function drupal_http_request($url, array $options = array()) { ...@@ -632,7 +639,7 @@ function drupal_http_request($url, array $options = array()) {
$result->redirect_url = $location; $result->redirect_url = $location;
break; break;
default: default:
$result->error = $status; $result->error = $status_message;
} }
return $result; return $result;
......
...@@ -303,6 +303,12 @@ class DrupalHTTPRequestTestCase extends DrupalWebTestCase { ...@@ -303,6 +303,12 @@ class DrupalHTTPRequestTestCase extends DrupalWebTestCase {
$this->assertEqual($result->code, 200, t('Fetched page successfully.')); $this->assertEqual($result->code, 200, t('Fetched page successfully.'));
$this->drupalSetContent($result->data); $this->drupalSetContent($result->data);
$this->assertTitle(variable_get('site_name', 'Drupal'), t('Site title matches.')); $this->assertTitle(variable_get('site_name', 'Drupal'), t('Site title matches.'));
// Test that code and status message is returned.
$result = drupal_http_request(url('pagedoesnotexist', array('absolute' => TRUE)));
$this->assertEqual($result->protocol, 'HTTP/1.0', t('Result protocol is set as HTTP/1.0'));
$this->assertEqual($result->code, '404', t('Result code is 404'));
$this->assertEqual($result->status_message, 'Not Found', t('Result status message is "Not Found"'));
} }
function testDrupalHTTPRequestBasicAuth() { function testDrupalHTTPRequestBasicAuth() {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment