Created
August 26, 2011 17:50
-
-
Save chonthu/1173960 to your computer and use it in GitHub Desktop.
Backtype
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* @name backtype | |
* @author Nithin Meppurathu | |
* @author_url http://www.nitmedia.com | |
* @version 1.1 | |
* @license Do Not distribute under any terms | |
* | |
* Backtype library for Codeigniter. | |
* Class Helps us connect with the backtype api and get back results. | |
* | |
* Api URL's | |
* --------------------------------- | |
* Homepage : http://www.backtype.com/developers | |
* Comments Search : http://www.backtype.com/developers/comments-search | |
* Comments Connect : http://www.backtype.com/developers/connect | |
* Comments Stats : http://www.backtype.com/developers/comments-connect-stats | |
* Url Comments : http://www.backtype.com/developers/url-comments | |
* Post Comments : http://www.backtype.com/developers/page-comments | |
* Post Stats : http://www.backtype.com/developers/page-comments-stats | |
* Tweetcount : http://www.backtype.com/developers/tweet-count | |
*/ | |
class Backtype { | |
var $key = '2637236273672'; //replaces with your backtype api | |
// Also xml is a valid format | |
var $format = 'json'; | |
var $api_url = 'http://api.backtype.com/'; | |
var $website = 'http://developers.nitmedia.com/'; | |
/** | |
* Callback defined by the backtype api | |
* | |
* @string comments_search : searches backtypes comments by specifi page, query, or domain | |
* @string comments_connect : seraches against different sources native, blog, digg, reddit, yc, friendfeed, twitter | |
* @string comments_connect_stats : searched for statistics a specific domain | |
* @mixed url_comments : searches backtypes comments by a specific author | |
* @string post_comments : searches excerpts of comments published on a particular page | |
* @string post_stats : searches for statistics for a specific page | |
* @string tweetcount : searches for twitter hits count on specific page | |
*/ | |
var $callbacks = array( | |
'comments_search' => 'comments/search', | |
'comments_connect' => 'comments/connect', | |
'comments_connect_stats' => 'comments/connect/stats', | |
'url_comments' => 'url/{$q}/comments', | |
'post_comments' => 'post/comments', | |
'post_stats' => 'post/stats', | |
'tweetcount' => 'tweetcount' | |
); | |
/** | |
* Constructs the class | |
* Intiializes code igniter | |
* Calls a curl helper from our codeigniter instalation | |
* | |
*/ | |
function __construct() | |
{ | |
$this->CI = get_instance(); | |
// loads curl helper php curl wrapper with timeout | |
$this->CI->load->helper('curl_helper'); | |
} | |
/** | |
* Curl Constructor | |
* Takes a query and builds it with our above settings | |
* | |
* @param var callback : the object url | |
* @param array params : (optional) the paramaters for constructing a query string | |
* @param string : (optional) the format wither json or xml | |
* @return curled url | |
*/ | |
function connect($callback, $params=FALSE, $format=FALSE) | |
{ | |
$query_string = ($params) ? http_build_query($params).'&' : ''; | |
$format_type = ($format) ? $format : $this->format; | |
$parsed_url = $this->api_url.$callback.'.'.$format_type.'?'.$query_string.'key='.$this->key; | |
return curl_connect(array('url'=> $parsed_url, 'timeout'=> 5)); | |
} | |
/** | |
* Searches backtypes comments by a specific author | |
* | |
* @param string q : the query string | |
* @return string | |
*/ | |
function author($q) | |
{ | |
return $this->connect($this->callbacks['url_comments']); | |
} | |
/** | |
* Searches for twitter hits count on specific page | |
* | |
* @param string q : the query string | |
* @param bool batch : (optional) | |
* Searches for twitter hits count for muiltiple pages | |
* on responce provides the specific url of page the tweetcount belongs to | |
* format, commma deliminated | |
* @return string | |
*/ | |
function tweets($q, $batch=FALSE) | |
{ | |
$params['q'] = $q; | |
if($batch) $params['mode'] = 'batch'; | |
return $this->connect($this->callbacks['tweetcount'],$params); | |
} | |
/** | |
* Gets comments published on a particular page | |
* | |
* @param string url : the query string | |
* @param bool stats : (optional) get statistics the specific page | |
* @return string | |
*/ | |
function page($url, $stats=FALSE) | |
{ | |
$params['url'] = $url; | |
if($stats) | |
return $this->connect($this->callbacks['post_stats'],$params); | |
else | |
return $this->connect($this->callbacks['post_comments'],$params); | |
} | |
/** | |
* Global search for all comments | |
* | |
* @param string q : the query string or url | |
* @param array sources : (optional) enables to search by sources, comma deliminated | |
* --- string sources['sources']: (optional) searches against different sources native, blog, digg, reddit, yc, friendfeed, twitter | |
* --- int sources['sort'] : (optional) sort sources by type | |
* @param array date : (optional) does not work with sources | dates format in 'YYYY/MM/DD' | |
* @return string | |
*/ | |
function comments($q, $sources=FALSE, $stats=FALSE, $date=FALSE) | |
{ | |
if($stats) | |
{ | |
$params['url'] = $q; | |
return $this->connect($this->callbacks['comments_connect_stats'],$params); | |
} | |
else | |
{ | |
if($sources) | |
{ | |
$params['url'] = $q; | |
$params['sources'] = $sources['sources']; | |
if($sources['sort']) $params['sort'] = $sources['sort']; | |
return $this->connect($this->callbacks['comments_connect'],$params); | |
} | |
else | |
{ | |
$params['q'] = $q; | |
if($start) $params['start'] = $start; | |
if($end) $params['end'] = $end; | |
return $this->connect($this->callbacks['comments_search'],$params); | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment