/** * pretty much a helper function to set up the request */ public static function from_consumer_and_token($consumer, $token, $http_method, $http_url, $parameters = NULL) { @$parameters or $parameters = array(); $defaults = array("oauth_version" => RopOAuthRequest::$version, "oauth_nonce" => RopOAuthRequest::generate_nonce(), "oauth_timestamp" => RopOAuthRequest::generate_timestamp(), "oauth_consumer_key" => $consumer->key); if ($token) { $defaults['oauth_token'] = $token->key; } $parameters = array_merge($defaults, $parameters); // print_r($parameters); return new RopOAuthRequest($http_method, $http_url, $parameters); }
/** * Format and sign an OAuth / API request */ function RopOAuthRequest($url, $method, $parameters, $upload = false) { if (strrpos($url, 'https://') !== 0 && strrpos($url, 'http://') !== 0) { $url = "{$this->host}{$url}.{$this->format}"; } if ($upload) { // we only need to sign the oauth_* parameters for this, see // https://dev.twitter.com/discussions/1059?page=4 $signable_parameters = array(); foreach ($parameters as $k => &$v) { if (substr($k, 0, 6) == "oauth_") { $signable_parameters[$k] = $v; } } $request = RopOAuthRequest::from_consumer_and_token($this->consumer, $this->token, $method, $url, $signable_parameters); $request->sign_request($this->sha1_method, $this->consumer, $this->token); $request->set_parameters($parameters); } else { $request = RopOAuthRequest::from_consumer_and_token($this->consumer, $this->token, $method, $url, $parameters); $request->sign_request($this->sha1_method, $this->consumer, $this->token); } switch ($method) { case 'GET': return $this->http($request->to_url(), 'GET'); default: return $this->http($request->get_normalized_http_url(), $method, $upload ? $request->get_parameters() : $request->to_postdata(), $upload ? $request->to_header() : false); } }