// $req = new TnxRequest( // [ // CURLOPT_RETURNTRANSFER => true, // CURLOPT_URL => "https://carlo.tnx.it/sleep.php?noFlush=1&a=0", // CURLOPT_POSTFIELDS => http_build_query([ // "grant_type" => "refresh_token", // "client_id" => $client_id, // "client_secret" => $client_secret, // "refresh_token" => $DB["users"][$user]["token"]->refresh_token // ]) // ], // [ // 'debug' => true, // 'cache' => true, // 'cacheDir' => "test", // 'getCacheName' => function($curlOpt){ // return substr($curlOpt[CURLOPT_URL], -1); // }, // ] // ); // $ret = $req->exec(); class TnxRequest{ public $curlOpt = []; public $debug = false; public $cache = false; public $cacheDir = '.'; function __construct($curlOpt = [], $tnxOpt = []){ $this->curlOpt = $curlOpt; foreach($tnxOpt as $k=>$v) $this->$k = $v; } function info($option = null){ return curl_getinfo($this->curlHandle, $option); } function exec(){ if($this->cache){ if(is_callable($this->getCacheName)) $cacheName = call_user_func($this->getCacheName, $this->curlOpt); else $cacheName = md5(serialize($this->curlOpt)); if(!is_dir($this->cacheDir)) mkdir($this->cacheDir); if(is_file($this->cacheDir."/".$cacheName)) return file_get_contents($this->cacheDir."/".$cacheName); } if($this->debug){ $this->curlOpt[CURLOPT_VERBOSE] = true; $this->curlOpt[CURLOPT_STDERR] = fopen('php://temp', 'w'); } $this->curlHandle = curl_init(); curl_setopt_array($this->curlHandle, $this->curlOpt); $return = curl_exec($this->curlHandle); if($this->debug){ rewind($this->curlOpt[CURLOPT_STDERR]); echo "
".print_r($this->curlOpt, true)."\n".stream_get_contents($this->curlOpt[CURLOPT_STDERR]).""; } if($this->cache) file_put_contents($this->cacheDir."/".$cacheName, $return); return $return; } } ?>