Ticket #37097: 37097.2.diff
File 37097.2.diff, 4.7 KB (added by , 9 years ago) |
---|
-
src/wp-includes/class-http.php
348 348 $options['verify'] = apply_filters( 'https_ssl_verify', $options['verify'] ); 349 349 350 350 try { 351 $re sponse = Requests::request( $url, $headers, $data, $type, $options );351 $requests_response = Requests::request( $url, $headers, $data, $type, $options ); 352 352 353 353 // Convert the response into an array 354 $response = new WP_HTTP_Requests_Response( $response, $r['filename'] ); 354 $http_response = new WP_HTTP_Requests_Response( $requests_response, $r['filename'] ); 355 $response = $http_response->to_array(); 356 357 // Add the original object to the array. 358 $response['http_response'] = $http_response; 355 359 } 356 360 catch ( Requests_Exception $e ) { 357 361 $response = new WP_Error( 'http_request_failed', $e->getMessage() ); … … 382 386 'message' => false, 383 387 ), 384 388 'cookies' => array(), 389 'http_response' => null, 385 390 ); 386 391 } 387 392 -
src/wp-includes/class-wp-http-requests-response.php
1 1 <?php 2 2 3 3 /** 4 * Wrapper object for a Requests_Response for compatibility.4 * Wrapper object for a Requests_Response for standardisation. 5 5 * 6 6 * @package WordPress 7 7 * @subpackage HTTP 8 8 * @since 4.6.0 9 9 */ 10 class WP_HTTP_Requests_Response extends WP_HTTP_Response implements ArrayAccess{10 class WP_HTTP_Requests_Response extends WP_HTTP_Response { 11 11 /** 12 12 * Requests Response object. 13 13 * … … 142 142 } 143 143 144 144 /** 145 * C heck if an ArrayAccess offset exists.145 * Convert the object to a WP_Http response array. 146 146 * 147 * This is for array access back-compat. 148 * 149 * @param string|int $key Array offset. 150 * @return bool True if the offset exists, false otherwise. 147 * @return array WP_Http response array, per WP_Http::request(). 151 148 */ 152 public function offsetExists( $key ) { 153 $allowed = array( 'headers', 'body', 'response', 'cookies', 'filename' ); 154 return in_array( $key, $allowed ); 149 public function to_array() { 150 return array( 151 'headers' => $this->get_headers(), 152 'body' => $this->get_data(), 153 'response' => array( 154 'code' => $this->get_status(), 155 'message' => get_status_header_desc( $this->get_status() ), 156 ), 157 'cookies' => $this->get_cookies(), 158 'filename' => $this->filename, 159 ); 155 160 } 156 157 /**158 * Get an ArrayAccess value.159 *160 * This is for array access back-compat.161 *162 * @param string|int $key Array offset to get.163 * @return mixed Value if the key is a valid offset, null if invalid.164 */165 public function offsetGet( $key ) {166 switch ( $key ) {167 case 'headers':168 return $this->get_headers();169 170 case 'body':171 return $this->get_data();172 173 case 'response':174 return array(175 'code' => $this->get_status(),176 'message' => get_status_header_desc( $this->get_status() ),177 );178 179 case 'cookies':180 return $this->get_cookies();181 182 case 'filename':183 return $this->filename;184 }185 186 return null;187 }188 189 /**190 * Set an ArrayAccess value.191 *192 * This is for array access back-compat.193 *194 * @param string|int $key Array offset to set.195 * @param mixed $value Value to set.196 */197 public function offsetSet( $key, $value ) {198 switch ( $key ) {199 case 'headers':200 $this->set_headers( $value );201 break;202 203 case 'body':204 $this->set_data( $value );205 break;206 207 case 'response':208 if ( isset( $value['code'] ) ) {209 $this->set_status( $value['code'] );210 }211 break;212 213 case 'filename':214 $this->filename = $value;215 break;216 }217 }218 219 /**220 * Unset an ArrayAccess value.221 *222 * This is for array access back-compat.223 *224 * @param string|int $key Array offset to remove.225 */226 public function offsetUnset( $key ) {227 $this->offsetSet( $key, null );228 }229 161 } -
tests/phpunit/tests/http/functions.php
24 24 $this->assertEquals( '200', wp_remote_retrieve_response_code( $response ) ); 25 25 } 26 26 27 /** 28 * @depends test_head_request 29 */ 30 function test_returns_array() { 31 $url = 'https://asdftestblog1.files.wordpress.com/2007/09/2007-06-30-dsc_4700-1.jpg'; 32 $response = wp_remote_head( $url ); 33 $this->assertInternalType( 'array', $response ); 34 } 35 27 36 function test_head_redirect() { 28 37 // this url will 301 redirect 29 38 $url = 'https://asdftestblog1.wordpress.com/files/2007/09/2007-06-30-dsc_4700-1.jpg';