oauth = new OAuth($config['api_key'], $config['api_secret']); $this->oauth->setToken($config['access_token'], $config['access_token_secret']); $this->curl = curl_init(); curl_setopt_array($this->curl, array( CURLOPT_CONNECTTIMEOUT => 10, CURLOPT_TIMEOUT => 0, CURLOPT_VERBOSE => true, )); } function exec($url, $data = array(), $method = 'GET') { curl_setopt($this->curl, CURLOPT_URL, $url); switch ($method) { case 'GET': curl_setopt($this->curl, CURLOPT_HTTPGET, true); break; case 'POST': curl_setopt($this->curl, CURLOPT_POSTFIELDS, http_build_query($data)); break; } curl_setopt($this->curl, CURLOPT_HTTPHEADER, array( 'Authorization: ' . $this->oauth->getRequestHeader($method, $url, $data) )); curl_exec($this->curl); // TODO: retry connection if failed, with backoff // TODO: retry on idle connection } }