moved Libs out of core folder
This commit is contained in:
150
application/libs/curl-easy/cURL/Request.php
Normal file
150
application/libs/curl-easy/cURL/Request.php
Normal file
@ -0,0 +1,150 @@
|
||||
<?php
|
||||
namespace cURL;
|
||||
|
||||
use Symfony\Component\EventDispatcher\EventDispatcher;
|
||||
|
||||
class Request extends EventDispatcher implements RequestInterface
|
||||
{
|
||||
/**
|
||||
* @var resource cURL handler
|
||||
*/
|
||||
protected $ch;
|
||||
|
||||
/**
|
||||
* @var RequestsQueue Queue instance when requesting async
|
||||
*/
|
||||
protected $queue;
|
||||
|
||||
/**
|
||||
* @var Options Object containing options for current request
|
||||
*/
|
||||
protected $options = null;
|
||||
|
||||
/**
|
||||
* Create new cURL handle
|
||||
*
|
||||
* @param string $url The URL to fetch.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($url = null)
|
||||
{
|
||||
if ($url !== null) {
|
||||
$this->getOptions()->set(CURLOPT_URL, $url);
|
||||
}
|
||||
$this->ch = curl_init();
|
||||
}
|
||||
|
||||
/**
|
||||
* Closes cURL resource and frees the memory.
|
||||
* It is neccessary when you make a lot of requests
|
||||
* and you want to avoid fill up the memory.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __destruct()
|
||||
{
|
||||
if (isset($this->ch)) {
|
||||
curl_close($this->ch);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the cURL\Options instance
|
||||
* Creates empty one if does not exist
|
||||
*
|
||||
* @return Options
|
||||
*/
|
||||
public function getOptions()
|
||||
{
|
||||
if (!isset($this->options)) {
|
||||
$this->options = new Options;
|
||||
}
|
||||
return $this->options;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets Options
|
||||
*
|
||||
* @param Options $options Options
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setOptions(Options $options)
|
||||
{
|
||||
$this->options = $options;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns cURL raw resource
|
||||
*
|
||||
* @return resource cURL handle
|
||||
*/
|
||||
public function getHandle()
|
||||
{
|
||||
return $this->ch;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get unique id of cURL handle
|
||||
* Useful for debugging or logging.
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getUID()
|
||||
{
|
||||
return (int)$this->ch;
|
||||
}
|
||||
|
||||
/**
|
||||
* Perform a cURL session.
|
||||
* Equivalent to curl_exec().
|
||||
* This function should be called after initializing a cURL
|
||||
* session and all the options for the session are set.
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function send()
|
||||
{
|
||||
if ($this->options instanceof Options) {
|
||||
$this->options->applyTo($this);
|
||||
}
|
||||
$content = curl_exec($this->ch);
|
||||
|
||||
$response = new Response($this, $content);
|
||||
$errorCode = curl_errno($this->ch);
|
||||
if ($errorCode !== CURLE_OK) {
|
||||
$response->setError(new Error(curl_error($this->ch), $errorCode));
|
||||
}
|
||||
return $response;
|
||||
}
|
||||
|
||||
protected function prepareQueue()
|
||||
{
|
||||
if (!isset($this->queue)) {
|
||||
$request = $this;
|
||||
$this->queue = new RequestsQueue;
|
||||
$this->queue->addListener(
|
||||
'complete',
|
||||
function ($event) use ($request) {
|
||||
$request->dispatch('complete', $event);
|
||||
}
|
||||
);
|
||||
$this->queue->attach($this);
|
||||
}
|
||||
}
|
||||
|
||||
public function socketPerform()
|
||||
{
|
||||
$this->prepareQueue();
|
||||
return $this->queue->socketPerform();
|
||||
}
|
||||
|
||||
public function socketSelect($timeout = 1)
|
||||
{
|
||||
if (!isset($this->queue)) {
|
||||
throw new Exception('Cannot select without perform before.');
|
||||
}
|
||||
return $this->queue->socketSelect($timeout);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user