Advertisements

wp_get_http

Definition:
function wp_get_http( $url, $file_path = false, $red = 1 ) {}

Perform a HTTP HEAD or GET request.
If $file_path is a writable filename, this will do a GET request and write the file to that path.

Parameters

  • string $url: URL to fetch.
  • string|bool $file_path: Optional. File path to write request to.
  • int $red: (private) The number of Redirects followed, Upon 5 being hit, returns false.

Return values

returns:False on failure and string of headers if HEAD request.

Source code

function wp_get_http( $url, $file_path = false, $red = 1 ) {

	@set_time_limit( 60 );



	if ( $red > 5 )

		return false;



	$options = array();

	$options['redirection'] = 5;



	if ( false == $file_path )

		$options['method'] = 'HEAD';

	else

		$options['method'] = 'GET';



	$response = wp_remote_request($url, $options);



	if ( is_wp_error( $response ) )

		return false;



	$headers = wp_remote_retrieve_headers( $response );

	$headers['response'] = wp_remote_retrieve_response_code( $response );



	// WP_HTTP no longer follows redirects for HEAD requests.

	if ( 'HEAD' == $options['method'] && in_array($headers['response'], array(301, 302)) && isset( $headers['location'] ) ) {

		return wp_get_http( $headers['location'], $file_path, ++$red );

	}



	if ( false == $file_path )

		return $headers;



	// GET request - write it to the supplied filename

	$out_fp = fopen($file_path, 'w');

	if ( !$out_fp )

		return $headers;



	fwrite( $out_fp,  wp_remote_retrieve_body( $response ) );

	fclose($out_fp);

	clearstatcache();



	return $headers;

}

3703

Advertisements

No comments yet... Be the first to leave a reply!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: