diff -r 5b37998e522e -r 162c1de6545a web/lib/Zend/Oauth/Token.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/Zend/Oauth/Token.php Fri Mar 11 15:05:35 2011 +0100 @@ -0,0 +1,285 @@ +_response = $response; + $params = $this->_parseParameters($response); + if (count($params) > 0) { + $this->setParams($params); + } + } + if ($utility !== null) { + $this->_httpUtility = $utility; + } else { + $this->_httpUtility = new Zend_Oauth_Http_Utility; + } + } + + /** + * Attempts to validate the Token parsed from the HTTP response - really + * it's just very basic existence checks which are minimal. + * + * @return bool + */ + public function isValid() + { + if (isset($this->_params[self::TOKEN_PARAM_KEY]) + && !empty($this->_params[self::TOKEN_PARAM_KEY]) + && isset($this->_params[self::TOKEN_SECRET_PARAM_KEY]) + ) { + return true; + } + return false; + } + + /** + * Return the HTTP response object used to initialise this instance. + * + * @return Zend_Http_Response + */ + public function getResponse() + { + return $this->_response; + } + + /** + * Sets the value for the this Token's secret which may be used when signing + * requests with this Token. + * + * @param string $secret + * @return Zend_Oauth_Token + */ + public function setTokenSecret($secret) + { + $this->setParam(self::TOKEN_SECRET_PARAM_KEY, $secret); + return $this; + } + + /** + * Retrieve this Token's secret which may be used when signing + * requests with this Token. + * + * @return string + */ + public function getTokenSecret() + { + return $this->getParam(self::TOKEN_SECRET_PARAM_KEY); + } + + /** + * Sets the value for a parameter (e.g. token secret or other) and run + * a simple filter to remove any trailing newlines. + * + * @param string $key + * @param string $value + * @return Zend_Oauth_Token + */ + public function setParam($key, $value) + { + $this->_params[$key] = trim($value, "\n"); + return $this; + } + + /** + * Sets the value for some parameters (e.g. token secret or other) and run + * a simple filter to remove any trailing newlines. + * + * @param array $params + * @return Zend_Oauth_Token + */ + public function setParams(array $params) + { + foreach ($params as $key=>$value) { + $this->setParam($key, $value); + } + return $this; + } + + /** + * Get the value for a parameter (e.g. token secret or other). + * + * @param string $key + * @return mixed + */ + public function getParam($key) + { + if (isset($this->_params[$key])) { + return $this->_params[$key]; + } + return null; + } + + /** + * Sets the value for a Token. + * + * @param string $token + * @return Zend_Oauth_Token + */ + public function setToken($token) + { + $this->setParam(self::TOKEN_PARAM_KEY, $token); + return $this; + } + + /** + * Gets the value for a Token. + * + * @return string + */ + public function getToken() + { + return $this->getParam(self::TOKEN_PARAM_KEY); + } + + /** + * Generic accessor to enable access as public properties. + * + * @return string + */ + public function __get($key) + { + return $this->getParam($key); + } + + /** + * Generic mutator to enable access as public properties. + * + * @param string $key + * @param string $value + * @return void + */ + public function __set($key, $value) + { + $this->setParam($key, $value); + } + + /** + * Convert Token to a string, specifically a raw encoded query string. + * + * @return string + */ + public function toString() + { + return $this->_httpUtility->toEncodedQueryString($this->_params); + } + + /** + * Convert Token to a string, specifically a raw encoded query string. + * Aliases to self::toString() + * + * @return string + */ + public function __toString() + { + return $this->toString(); + } + + /** + * Parse a HTTP response body and collect returned parameters + * as raw url decoded key-value pairs in an associative array. + * + * @param Zend_Http_Response $response + * @return array + */ + protected function _parseParameters(Zend_Http_Response $response) + { + $params = array(); + $body = $response->getBody(); + if (empty($body)) { + return; + } + + // validate body based on acceptable characters...todo + $parts = explode('&', $body); + foreach ($parts as $kvpair) { + $pair = explode('=', $kvpair); + $params[rawurldecode($pair[0])] = rawurldecode($pair[1]); + } + return $params; + } + + /** + * Limit serialisation stored data to the parameters + */ + public function __sleep() + { + return array('_params'); + } + + /** + * After serialisation, re-instantiate a HTTP utility class for use + */ + public function __wakeup() + { + if ($this->_httpUtility === null) { + $this->_httpUtility = new Zend_Oauth_Http_Utility; + } + } +}