http_status; } function lastAPICall() { return $this->last_api_call; } /** * construct TwitterOAuth object */ function __construct($consumer_key, $consumer_secret, $oauth_token = NULL, $oauth_token_secret = NULL) {/*{{{*/ $this->sha1_method = new OAuthSignatureMethod_HMAC_SHA1(); $this->consumer = new OAuthConsumer($consumer_key, $consumer_secret); if (!empty($oauth_token) && !empty($oauth_token_secret)) { $this->token = new OAuthConsumer($oauth_token, $oauth_token_secret); } else { $this->token = NULL; } }/*}}}*/ /** * Get a request_token from Twitter * * @returns a key/value array containing oauth_token and oauth_token_secret */ function getRequestToken() {/*{{{*/ $r = $this->oAuthRequest($this->requestTokenURL()); $token = $this->oAuthParseResponse($r); $this->token = new OAuthConsumer($token['oauth_token'], $token['oauth_token_secret']); return $token; }/*}}}*/ /** * Parse a URL-encoded OAuth response * * @return a key/value array */ function oAuthParseResponse($responseString) { $r = array(); foreach (explode('&', $responseString) as $param) { $pair = explode('=', $param, 2); if (count($pair) != 2) continue; $r[urldecode($pair[0])] = urldecode($pair[1]); } return $r; } /** * Get the authorize URL * * @returns a string */ function getAuthorizeURL($token) {/*{{{*/ if (is_array($token)) $token = $token['oauth_token']; return $this->authorizeURL() . '?oauth_token=' . $token; }/*}}}*/ /** * Exchange the request token and secret for an access token and * secret, to sign API calls. * * @returns array("oauth_token" => the access token, * "oauth_token_secret" => the access secret) */ function getAccessToken($token = NULL) {/*{{{*/ $r = $this->oAuthRequest($this->accessTokenURL()); $token = $this->oAuthParseResponse($r); $this->token = new OAuthConsumer($token['oauth_token'], $token['oauth_token_secret']); return $token; }/*}}}*/ /** * Format and sign an OAuth / API request */ function oAuthRequest($url, $args = array(), $method = NULL) {/*{{{*/ if (empty($method)) $method = empty($args) ? "GET" : "POST"; $req = OAuthRequest::from_consumer_and_token($this->consumer, $this->token, $method, $url, $args); $req->sign_request($this->sha1_method, $this->consumer, $this->token); switch ($method) { case 'GET': return $this->http($req->to_url()); case 'POST': return $this->http($req->get_normalized_http_url(), $req->to_postdata()); } }/*}}}*/ /** * Make an HTTP request * * @return API results */ function http($url, $post_data = null) {/*{{{*/ $ch = curl_init(); if (defined("CURL_CA_BUNDLE_PATH")) curl_setopt($ch, CURLOPT_CAINFO, CURL_CA_BUNDLE_PATH); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); ////////////////////////////////////////////////// ///// Set to 1 to verify Twitter's SSL Cert ////// ////////////////////////////////////////////////// curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); if (isset($post_data)) { curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); } $response = curl_exec($ch); $this->http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE); $this->last_api_call = $url; curl_close ($ch); return $response; }/*}}}*/ }/*}}}*/