%PDF- %PDF-
| Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/libs/ |
| Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/libs/UrlOembedHttpClient.php |
<?php
namespace humhub\libs;
use Yii;
use yii\helpers\Json;
class UrlOembedHttpClient implements UrlOembedClient
{
const RESPONSE_UNAUTHORIZED = 'Unauthorized';
const RESPONSE_NOT_FOUND = 'Not Found';
const ERROR_RESPONSES = [
self::RESPONSE_NOT_FOUND,
self::RESPONSE_UNAUTHORIZED
];
/**
* @inheritdoc
*/
public function fetchUrl($url)
{
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_TIMEOUT, 15);
// Not available when open_basedir is set.
if (!function_exists('ini_get') || !ini_get('open_basedir')) {
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
}
if (Yii::$app->settings->get('proxy.enabled')) {
curl_setopt($curl, CURLOPT_PROXY, Yii::$app->settings->get('proxy.server'));
curl_setopt($curl, CURLOPT_PROXYPORT, Yii::$app->settings->get('proxy.port'));
curl_setopt($curl, CURLOPT_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS);
curl_setopt($curl, CURLOPT_REDIR_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS);
if (defined('CURLOPT_PROXYUSERNAME')) {
curl_setopt($curl, CURLOPT_PROXYUSERNAME, Yii::$app->settings->get('proxy.user'));
}
if (defined('CURLOPT_PROXYPASSWORD')) {
curl_setopt($curl, CURLOPT_PROXYPASSWORD, Yii::$app->settings->get('proxy.password'));
}
if (defined('CURLOPT_NOPROXY')) {
curl_setopt($curl, CURLOPT_NOPROXY, Yii::$app->settings->get('proxy.noproxy'));
}
}
$return = curl_exec($curl);
curl_close($curl);
return $this->parseJson($return);
}
/**
* @param $json
* @return string|null
*/
protected function parseJson($json)
{
try {
if (!empty($json) && !in_array($json, static::ERROR_RESPONSES, true)) {
return Json::decode($json);
}
} catch (\Exception $ex) {
Yii::warning($ex);
}
return null;
}
}