_config = new Zend_Oauth_Config; if (!is_null($oauthOptions)) { if ($oauthOptions instanceof Zend_Config) { $oauthOptions = $oauthOptions->toArray(); } $this->_config->setOptions($oauthOptions); } } /** * Same as Zend_Http_Client::setMethod() except it also creates an * Oauth specific reference to the method type. * Might be defunct and removed in a later iteration. * * @param string $method * @return Zend_Http_Client */ public function setMethod($method = self::GET) { if ($method == self::GET) { $this->setRequestMethod(self::GET); } elseif($method == self::POST) { $this->setRequestMethod(self::POST); } elseif($method == self::PUT) { $this->setRequestMethod(self::PUT); } elseif($method == self::DELETE) { $this->setRequestMethod(self::DELETE); } elseif($method == self::HEAD) { $this->setRequestMethod(self::HEAD); } return parent::setMethod($method); } /** * Same as Zend_Http_Client::request() except just before the request is * executed, we automatically append any necessary OAuth parameters and * sign the request using the relevant signature method. * * @param string $method * @return Zend_Http_Response */ public function request($method = null) { if (!is_null($method)) { $this->setMethod($method); } $this->prepareOauth(); return parent::request(); } /** * Performs OAuth preparation on the request before sending. * * This primarily means taking a request, correctly encoding and signing * all parameters, and applying the correct OAuth scheme to the method * being used. * * @return void * @throws Zend_Oauth_Exception If POSTBODY scheme requested, but GET request method used; or if invalid request scheme provided */ public function prepareOauth() { $requestScheme = $this->getRequestScheme(); $requestMethod = $this->getRequestMethod(); $query = null; if ($requestScheme == Zend_Oauth::REQUEST_SCHEME_HEADER) { $params = array(); if (!empty($this->paramsGet)) { $params = array_merge($params, $this->paramsGet); $query = $this->getToken()->toQueryString( $this->getUri(true), $this->_config, $params ); } if (!empty($this->paramsPost)) { $params = array_merge($params, $this->paramsPost); $query = $this->getToken()->toQueryString( $this->getUri(true), $this->_config, $params ); } $oauthHeaderValue = $this->getToken()->toHeader( $this->getUri(true), $this->_config, $params ); $this->setHeaders('Authorization', $oauthHeaderValue); } elseif ($requestScheme == Zend_Oauth::REQUEST_SCHEME_POSTBODY) { if ($requestMethod == self::GET) { require_once 'Zend/Oauth/Exception.php'; throw new Zend_Oauth_Exception( 'The client is configured to' . ' pass OAuth parameters through a POST body but request method' . ' is set to GET' ); } $raw = $this->getToken()->toQueryString( $this->getUri(true), $this->_config, $this->paramsPost ); $this->setRawData($raw); $this->paramsPost = array(); } elseif ($requestScheme == Zend_Oauth::REQUEST_SCHEME_QUERYSTRING) { $params = array(); $query = $this->getUri()->getQuery(); if ($query) { $queryParts = split('&', $this->getUri()->getQuery()); foreach ($queryParts as $queryPart) { $kvTuple = split('=', $queryPart); $params[$kvTuple[0]] = (array_key_exists(1, $kvTuple) ? $kvTuple[1] : NULL); } } $query = $this->getToken()->toQueryString( $this->getUri(true), $this->_config, $params ); $this->getUri()->setQuery($query); $this->paramsGet = array(); } else { require_once 'Zend/Oauth/Exception.php'; throw new Zend_Oauth_Exception('Invalid request scheme: ' . $requestScheme); } } /** * Simple Proxy to the current Zend_Oauth_Config method. It's that instance * which holds all configuration methods and values this object also presents * as it's API. * * @param string $method * @param array $args * @return mixed * @throws Zend_Oauth_Exception if method does not exist in config object */ public function __call($method, array $args) { if (!method_exists($this->_config, $method)) { require_once 'Zend/Oauth/Exception.php'; throw new Zend_Oauth_Exception('Method does not exist: ' . $method); } return call_user_func_array(array($this->_config,$method), $args); } }