web reader for synchronous web requests
This commit is contained in:
parent
15edb02e9e
commit
8e44f0f3c5
79
application/core/Files/WebReader.php
Normal file
79
application/core/Files/WebReader.php
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ManiaControl\Files;
|
||||||
|
|
||||||
|
use cURL\Request;
|
||||||
|
use cURL\Response;
|
||||||
|
use ManiaControl\ManiaControl;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reader Utility Class for efficient Web Requests
|
||||||
|
*
|
||||||
|
* @author ManiaControl Team <mail@maniacontrol.com>
|
||||||
|
* @copyright 2014 ManiaControl Team
|
||||||
|
* @license http://www.gnu.org/licenses/ GNU General Public License, Version 3
|
||||||
|
*/
|
||||||
|
abstract class WebReader {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load a URL via GET
|
||||||
|
*
|
||||||
|
* @param string $url
|
||||||
|
* @param callable $function
|
||||||
|
* @return Response
|
||||||
|
*/
|
||||||
|
public static function loadUrl($url, callable $function = null) {
|
||||||
|
$request = static::newRequest($url);
|
||||||
|
$response = $request->send();
|
||||||
|
if (!is_null($function)) {
|
||||||
|
$content = $response->getContent();
|
||||||
|
$error = $response->getError()
|
||||||
|
->getMessage();
|
||||||
|
call_user_func($function, $content, $error);
|
||||||
|
}
|
||||||
|
return $response;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new cURL Request for the given URL
|
||||||
|
*
|
||||||
|
* @param string $url
|
||||||
|
* @return Request
|
||||||
|
*/
|
||||||
|
protected static function newRequest($url) {
|
||||||
|
$request = new Request($url);
|
||||||
|
$request->getOptions()
|
||||||
|
->set(CURLOPT_TIMEOUT, 10)
|
||||||
|
->set(CURLOPT_HEADER, false) // don't display response header
|
||||||
|
->set(CURLOPT_CRLF, true) // linux line feed
|
||||||
|
->set(CURLOPT_ENCODING, '') // accept encoding
|
||||||
|
->set(CURLOPT_USERAGENT, 'ManiaControl v' . ManiaControl::VERSION) // user-agent
|
||||||
|
->set(CURLOPT_RETURNTRANSFER, true) // return instead of output content
|
||||||
|
->set(CURLOPT_AUTOREFERER, true); // follow redirects
|
||||||
|
return $request;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load a URL via POST
|
||||||
|
*
|
||||||
|
* @param string $url
|
||||||
|
* @param string $content
|
||||||
|
* @param callable $function
|
||||||
|
* @return Response
|
||||||
|
*/
|
||||||
|
public static function postUrl($url, $content = null, callable $function = null) {
|
||||||
|
$request = static::newRequest($url)
|
||||||
|
->set(CURLOPT_POST, true); // post method
|
||||||
|
if ($content) {
|
||||||
|
$request->set(CURLOPT_POSTFIELDS, $content); // post content field
|
||||||
|
}
|
||||||
|
$response = $request->send();
|
||||||
|
if (!is_null($function)) {
|
||||||
|
$content = $response->getContent();
|
||||||
|
$error = $response->getError()
|
||||||
|
->getMessage();
|
||||||
|
call_user_func($function, $content, $error);
|
||||||
|
}
|
||||||
|
return $response;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user