Skip to content

Instantly share code, notes, and snippets.

@qstudio
Last active October 11, 2017 12:00
Show Gist options
  • Save qstudio/ad94d63ec2f586970e6a6ae132d1ffa0 to your computer and use it in GitHub Desktop.
Save qstudio/ad94d63ec2f586970e6a6ae132d1ffa0 to your computer and use it in GitHub Desktop.
<?php
namespace q\test;
class url {
// results ##
public static
$results = [
'url' => 'MISSING',
'status' => '400',
'sent' => false,
'received' => false,
'body' => false,
];
public function __construct()
{
// check if any url passed ##
if ( ! $url = self::get() ) {
self::log( 'No URL passed.' );
return self::render();
}
// run request ##
$request = self::request( $url );
// format output ##
self::$results = [
'url' => $url,
'status' => $request['status'],
'sent' => $request['sent'],
'received' => $request['received'],
'body' => $request['body'],
];
// render output ##
return self::render();
}
protected static function request( $url = null )
{
// sanity ##
if ( is_null( $url ) ) {
return false;
}
$curlHandle = curl_init();
$timeout = 5;
curl_setopt( $curlHandle, CURLINFO_HEADER_OUT, true ); // enable tracking
curl_setopt( $curlHandle, CURLOPT_URL, $url );
curl_setopt( $curlHandle, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt( $curlHandle, CURLOPT_FILETIME, true);
curl_setopt( $curlHandle, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $curlHandle, CURLOPT_HEADER, true );
curl_setopt( $curlHandle, CURLOPT_CONNECTTIMEOUT, $timeout );
curl_setopt( $curlHandle, CURLOPT_NOBODY, true );
$data = curl_exec( $curlHandle );
$status = curl_getinfo( $curlHandle, CURLINFO_HTTP_CODE );
$sent = curl_getinfo( $curlHandle );
curl_close( $curlHandle );
// kick back results ##
return [
'status' => $status,
'sent' => $sent['request_header'],
'received' => $data,
'body' => false
];
}
protected static function render()
{
?>
<ul>
<li><h1>URL: <?php echo self::$results['url']; ?></h1></li>
<li><h4>Status: <?php echo self::$results['status']; ?></h4></li>
<li>Sent:</li>
<li><?php var_dump( self::$results['sent'] ); ?></li>
<hr>
<li>Received:</li>
<li><?php var_dump( self::$results['received'] ); ?></li>
</ul>
<?php
}
protected static function get()
{
#$url = "http://www.example.com/";
$url = isset( $_GET['url'] ) ? $_GET['url'] : false ;
// kick it back sanitized ##
return false === self::is_url( $url ) ? false : $url;
}
protected static function is_url( $url = null )
{
return
( filter_var( $url, FILTER_VALIDATE_URL) === FALSE ) ?
false :
true ;
}
/**
* Write to WP Error Log
*
* @since 1.5.0
* @return void
*/
public static function log( $log )
{
#if ( true === WP_DEBUG ) {
$trace = debug_backtrace();
$caller = $trace[1];
$suffix = sprintf(
' - %s%s() %s:%d'
, isset($caller['class']) ? $caller['class'].'::' : ''
, $caller['function']
, isset( $caller['file'] ) ? $caller['file'] : 'n'
, isset( $caller['line'] ) ? $caller['line'] : 'x'
);
if ( is_array( $log ) || is_object( $log ) ) {
error_log( print_r( $log, true ).$suffix );
} else {
error_log( $log.$suffix );
}
#}
}
}
// run it ##
New url();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment