| Current Path : /home/azimutno/www/templates/jdirect_aviato/warp/src/Warp/Http/Transport/ |
| Current File : /home/azimutno/www/templates/jdirect_aviato/warp/src/Warp/Http/Transport/CurlTransport.php |
<?php
/**
* @package Warp Theme Framework
* @author YOOtheme http://www.yootheme.com
* @copyright Copyright (C) YOOtheme GmbH
* @license http://www.gnu.org/licenses/gpl.html GNU/GPL
*/
namespace Warp\Http\Transport;
/**
* HTTP transport class using cURL.
*/
class CurlTransport extends AbstractTransport
{
/**
* Execute a HTTP request
*
* @param string $url
* @param array $options
* @return mixed
*/
public function request($url, $options = array())
{
// parse request
$request = $this->parseRequest($url, $options);
// set curl options
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTP_VERSION, $request['version'] == '1.0' ? CURL_HTTP_VERSION_1_0 : CURL_HTTP_VERSION_1_1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, $request['timeout']);
curl_setopt($curl, CURLOPT_TIMEOUT, $request['timeout']);
curl_setopt($curl, CURLOPT_MAXREDIRS, $request['redirects']);
curl_setopt($curl, CURLOPT_HEADER, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
// post request ?
if ($request['method'] == 'POST') {
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $request['body']);
}
// put request ?
if ($request['method'] == 'PUT') {
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $request['method']);
curl_setopt($curl, CURLOPT_POSTFIELDS, $request['body']);
}
// connect with curl
$res = curl_exec($curl);
curl_close($curl);
// parse response
$res = $this->parseResponse($res);
// save to file
if ($res && $request['file'] && file_put_contents($request['file'], $res['body']) === false) {
return false;
}
return $res;
}
/**
* Check if HTTP request method is available.
*
* @return boolean
*/
public function available()
{
return function_exists('curl_init');
}
}