WordPress/wp-includes/http.php

198 lines
5.3 KiB
PHP

<?php
/**
* Simple and uniform HTTP request API.
*
* Will eventually replace and standardize the WordPress HTTP requests made.
*
* @link http://trac.wordpress.org/ticket/4779 HTTP API Proposal
*
* @package WordPress
* @subpackage HTTP
* @since 2.7.0
* @author Jacob Santos <wordpress@santosj.name>
*/
/**
* Returns the initialized WP_Http Object
*
* @since 2.7.0
* @access private
*
* @return WP_Http HTTP Transport object.
*/
function &_wp_http_get_object() {
static $http;
if ( ! class_exists('WP_Http') )
require( ABSPATH . WPINC . '/class-http.php' );
if ( is_null($http) )
$http = new WP_Http();
return $http;
}
/**
* Retrieve the raw response from the HTTP request.
*
* The array structure is a little complex.
*
* <code>
* $res = array( 'headers' => array(), 'response' => array('code' => int, 'message' => string) );
* </code>
*
* All of the headers in $res['headers'] are with the name as the key and the
* value as the value. So to get the User-Agent, you would do the following.
*
* <code>
* $user_agent = $res['headers']['user-agent'];
* </code>
*
* The body is the raw response content and can be retrieved from $res['body'].
*
* This function is called first to make the request and there are other API
* functions to abstract out the above convoluted setup.
*
* @since 2.7.0
*
* @param string $url Site URL to retrieve.
* @param array $args Optional. Override the defaults.
* @return WP_Error|array The response or WP_Error on failure.
*/
function wp_remote_request($url, $args = array()) {
$objFetchSite = _wp_http_get_object();
return $objFetchSite->request($url, $args);
}
/**
* Retrieve the raw response from the HTTP request using the GET method.
*
* @see wp_remote_request() For more information on the response array format.
*
* @since 2.7.0
*
* @param string $url Site URL to retrieve.
* @param array $args Optional. Override the defaults.
* @return WP_Error|array The response or WP_Error on failure.
*/
function wp_remote_get($url, $args = array()) {
$objFetchSite = _wp_http_get_object();
return $objFetchSite->get($url, $args);
}
/**
* Retrieve the raw response from the HTTP request using the POST method.
*
* @see wp_remote_request() For more information on the response array format.
*
* @since 2.7.0
*
* @param string $url Site URL to retrieve.
* @param array $args Optional. Override the defaults.
* @return WP_Error|array The response or WP_Error on failure.
*/
function wp_remote_post($url, $args = array()) {
$objFetchSite = _wp_http_get_object();
return $objFetchSite->post($url, $args);
}
/**
* Retrieve the raw response from the HTTP request using the HEAD method.
*
* @see wp_remote_request() For more information on the response array format.
*
* @since 2.7.0
*
* @param string $url Site URL to retrieve.
* @param array $args Optional. Override the defaults.
* @return WP_Error|array The response or WP_Error on failure.
*/
function wp_remote_head($url, $args = array()) {
$objFetchSite = _wp_http_get_object();
return $objFetchSite->head($url, $args);
}
/**
* Retrieve only the headers from the raw response.
*
* @since 2.7.0
*
* @param array $response HTTP response.
* @return array The headers of the response. Empty array if incorrect parameter given.
*/
function wp_remote_retrieve_headers(&$response) {
if ( is_wp_error($response) || ! isset($response['headers']) || ! is_array($response['headers']))
return array();
return $response['headers'];
}
/**
* Retrieve a single header by name from the raw response.
*
* @since 2.7.0
*
* @param array $response
* @param string $header Header name to retrieve value from.
* @return string The header value. Empty string on if incorrect parameter given, or if the header doesnt exist.
*/
function wp_remote_retrieve_header(&$response, $header) {
if ( is_wp_error($response) || ! isset($response['headers']) || ! is_array($response['headers']))
return '';
if ( array_key_exists($header, $response['headers']) )
return $response['headers'][$header];
return '';
}
/**
* Retrieve only the response code from the raw response.
*
* Will return an empty array if incorrect parameter value is given.
*
* @since 2.7.0
*
* @param array $response HTTP response.
* @return string the response code. Empty string on incorrect parameter given.
*/
function wp_remote_retrieve_response_code(&$response) {
if ( is_wp_error($response) || ! isset($response['response']) || ! is_array($response['response']))
return '';
return $response['response']['code'];
}
/**
* Retrieve only the response message from the raw response.
*
* Will return an empty array if incorrect parameter value is given.
*
* @since 2.7.0
*
* @param array $response HTTP response.
* @return string The response message. Empty string on incorrect parameter given.
*/
function wp_remote_retrieve_response_message(&$response) {
if ( is_wp_error($response) || ! isset($response['response']) || ! is_array($response['response']))
return '';
return $response['response']['message'];
}
/**
* Retrieve only the body from the raw response.
*
* @since 2.7.0
*
* @param array $response HTTP response.
* @return string The body of the response. Empty string if no body or incorrect parameter given.
*/
function wp_remote_retrieve_body(&$response) {
if ( is_wp_error($response) || ! isset($response['body']) )
return '';
return $response['body'];
}
?>