160 lines
4.3 KiB
PHP
Executable File
160 lines
4.3 KiB
PHP
Executable File
<?php
|
|
|
|
namespace Nwdthemes\Revslider\Helper;
|
|
|
|
use \Magento\Framework\UrlInterface;
|
|
|
|
class Curl extends \Magento\Framework\App\Helper\AbstractHelper {
|
|
|
|
protected $_userAgent;
|
|
|
|
/**
|
|
* Constructor
|
|
*/
|
|
|
|
public function __construct(
|
|
\Magento\Framework\App\Helper\Context $context,
|
|
\Magento\Framework\App\ProductMetadataInterface $productMetadata,
|
|
\Magento\Store\Model\StoreManagerInterface $storeManager
|
|
) {
|
|
$version = $productMetadata->getVersion();
|
|
$url = $storeManager->getStore()->getBaseUrl(UrlInterface::URL_TYPE_WEB);
|
|
$this->_userAgent = "Magento/$version; $url";
|
|
|
|
parent::__construct($context);
|
|
}
|
|
|
|
/**
|
|
* Check if Curl available
|
|
*
|
|
* @return boolean
|
|
*/
|
|
|
|
public function test() {
|
|
$test = function_exists('curl_version');
|
|
return $test;
|
|
}
|
|
|
|
/**
|
|
* Get user agent
|
|
*
|
|
* @return string
|
|
*/
|
|
|
|
public function getUserAgent() {
|
|
return $this->_userAgent;
|
|
}
|
|
|
|
/**
|
|
* Do request
|
|
*
|
|
* @param string $url
|
|
* @param array $args
|
|
* @return array
|
|
*/
|
|
|
|
public function request($url, $args = array()) {
|
|
|
|
$defaults = array(
|
|
'headers' => array(),
|
|
'cookies' => array(),
|
|
'httpversion' => CURL_HTTP_VERSION_NONE,
|
|
'timeout' => 30,
|
|
'method' => 'POST',
|
|
'body' => array()
|
|
);
|
|
$args = array_merge($defaults, $args);
|
|
|
|
$headers = array();
|
|
foreach ($args['headers'] as $key => $value) {
|
|
$headers[] = "$key: $value";
|
|
}
|
|
|
|
$ch = curl_init();
|
|
|
|
curl_setopt($ch, CURLOPT_URL, $url);
|
|
if ($args['method'] == 'POST' && $args['body'] && is_array($args['body'])) {
|
|
curl_setopt($ch, CURLOPT_POST, 1);
|
|
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($args['body']));
|
|
}
|
|
curl_setopt($ch, CURLOPT_USERAGENT, $this->_userAgent);
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
|
curl_setopt($ch, CURLOPT_COOKIE, implode('; ', $args['cookies']));
|
|
curl_setopt($ch, CURLOPT_FAILONERROR, true);
|
|
curl_setopt($ch, CURLOPT_TIMEOUT, $args['timeout']);
|
|
curl_setopt($ch, CURLOPT_HTTP_VERSION, $args['httpversion'] == '1.0' ? CURL_HTTP_VERSION_1_0 : ($args['httpversion'] == '1.1' ? CURL_HTTP_VERSION_1_1 : CURL_HTTP_VERSION_NONE));
|
|
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
|
|
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
|
|
curl_setopt($ch, CURLOPT_ENCODING, '');
|
|
|
|
$output = curl_exec($ch);
|
|
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
|
$error = curl_errno($ch);
|
|
$message = curl_error($ch);
|
|
|
|
curl_close ($ch);
|
|
|
|
$result = array(
|
|
'response' => array('code' => $code, 'message' => $message),
|
|
'body' => $output
|
|
);
|
|
return $result;
|
|
}
|
|
|
|
/**
|
|
* Get content from remote url
|
|
*
|
|
* @param string $url
|
|
* @param array $args
|
|
* @return array
|
|
*/
|
|
|
|
public function requestGet($url, $args = array()) {
|
|
$args['method'] = 'GET';
|
|
return $this->request($url, $args);
|
|
}
|
|
|
|
/**
|
|
* Open content from remote url
|
|
*
|
|
* @param string $url
|
|
* @return string
|
|
*/
|
|
|
|
public function remoteFileOpen($url) {
|
|
$args = array(
|
|
'method' => 'GET',
|
|
'timeout' => 5,
|
|
'redirection' => 5,
|
|
'httpversion' => '1.0',
|
|
'blocking' => true,
|
|
'body' => null
|
|
);
|
|
$response = $this->request($url, $args);
|
|
return $response['response']['code'] == 200 ? $response['body'] : '';
|
|
}
|
|
|
|
/**
|
|
* Get response code from response
|
|
*
|
|
* @param array $response
|
|
* @return string
|
|
*/
|
|
|
|
public function getCode($response) {
|
|
return $response['response']['code'];
|
|
}
|
|
|
|
/**
|
|
* Get body from response
|
|
*
|
|
* @param array $response
|
|
* @return string
|
|
*/
|
|
|
|
public function getBody($response) {
|
|
return $response['body'];
|
|
}
|
|
|
|
} |