diff -r 5b37998e522e -r 162c1de6545a web/lib/Zend/Service/Twitter/Search.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/Zend/Service/Twitter/Search.php Fri Mar 11 15:05:35 2011 +0100 @@ -0,0 +1,167 @@ +setResponseType($responseType); + $this->setUri("http://search.twitter.com"); + + $this->setHeaders('Accept-Charset', 'ISO-8859-1,utf-8'); + } + + /** + * set responseType + * + * @param string $responseType + * @throws Zend_Service_Twitter_Exception + * @return Zend_Service_Twitter_Search + */ + public function setResponseType($responseType = 'json') + { + if(!in_array($responseType, $this->_responseTypes, TRUE)) { + require_once 'Zend/Service/Twitter/Exception.php'; + throw new Zend_Service_Twitter_Exception('Invalid Response Type'); + } + $this->_responseType = $responseType; + return $this; + } + + /** + * Retrieve responseType + * + * @return string + */ + public function getResponseType() + { + return $this->_responseType; + } + + /** + * Get the current twitter trends. Currnetly only supports json as the return. + * + * @throws Zend_Http_Client_Exception + * @return array + */ + public function trends() + { + $response = $this->restGet('/trends.json'); + + return Zend_Json::decode($response->getBody()); + } + + /** + * Performs a Twitter search query. + * + * @throws Zend_Http_Client_Exception + */ + public function search($query, array $params = array()) + { + + $_query = array(); + + $_query['q'] = $query; + + foreach($params as $key=>$param) { + switch($key) { + case 'geocode': + case 'lang': + case 'since_id': + $_query[$key] = $param; + break; + case 'rpp': + $_query[$key] = (intval($param) > 100) ? 100 : intval($param); + break; + case 'page': + $_query[$key] = intval($param); + break; + case 'show_user': + $_query[$key] = 'true'; + } + } + + $response = $this->restGet('/search.' . $this->_responseType, $_query); + + switch($this->_responseType) { + case 'json': + return Zend_Json::decode($response->getBody()); + break; + case 'atom': + return Zend_Feed::importString($response->getBody()); + break; + } + + return ; + } +}