| 
<?
class BingAPI{
 var $accountKey = '';
 var $ServiceRootURL =  'https://api.datamarket.azure.com/Bing/Search/';
 var $WebSearchURL;
 var $searchText;
 var $searchType;
 var $request_data;
 var $AutoGet = true;
 var $ReturnType = 'JSON'; //Options: JSON, ARRAY
 var $ResultsLimit = 10;
 function __construct(){
 }
 function setQuery_Type($query,$type){
 $this->searchText = $query;
 switch($type){
 case 'Web':$this->searchType = 'Web';break;
 case 'Image':$this->searchType = 'Image';break;
 case 'News':$this->searchType = 'News';break;
 case 'Video':$this->searchType = 'Video';break;
 case 'Related':$this->searchType = 'RelatedSearch';break;
 }
 $this->createURL();
 }
 function createURL(){
 $this->WebSearchURL = $this->ServiceRootURL . $this->searchType .'?$format=json&$top='.$this->ResultsLimit.'&Query=';
 $this->context = stream_context_create(array(
 'http' => array(
 'request_fulluri' => true,
 'header'  => "Authorization: Basic " . base64_encode($this->accountKey . ":" . $this->accountKey)
 )
 ));
 $this->request = $this->WebSearchURL . urlencode( '\'' . $this->searchText . '\'');
 if($this->AutoGet){
 $this->get();
 }
 }
 function get(){
 $response = file_get_contents($this->request, 0, $this->context);
 $this->request_data = json_decode($response);
 }
 function decoded_data(){
 $r_array = array();
 switch($this->searchType){
 case 'Web':
 $obj = $this->request_data->d->results;
 $ic = count($obj);
 for($i=0;$i<$ic;$i++){
 $r_array[$i] = array('Title'=>$obj[$i]->Title,'Description'=>$obj[$i]->Description,'Url'=>$obj[$i]->Url);
 }
 break;
 case 'Image':
 $obj = $this->request_data->d->results;
 $ic = count($obj);
 for($i=0;$i<$ic;$i++){
 $r_array[$i] = array('Title'=>$obj[$i]->Title,'MediaURL'=>$obj[$i]->MediaUrl,'Width'=>$obj[$i]->Width,'Height'=>$obj[$i]->Height,'ContentType'=>$obj[$i]->ContentType,'Thumbnail'=>$obj[$i]->Thumbnail->MediaUrl);
 }
 break;
 case 'News':
 $obj = $this->request_data->d->results;
 $ic = count($obj);
 for($i=0;$i<$ic;$i++){
 $r_array[$i] = array('Title'=>$obj[$i]->Title,'Description'=>$obj[$i]->Description,'Url'=>$obj[$i]->Url,'Source'=>$obj[$i]->Source,'Date'=>$obj[$i]->Date);
 }
 break;
 case 'Video':
 $obj = $this->request_data->d->results;
 $ic = count($obj);
 for($i=0;$i<$ic;$i++){
 $r_array[$i] = array('Title'=>$obj[$i]->Title,'MediaUrl'=>$obj[$i]->MediaUrl,'DisplayUrl'=>$obj[$i]->DisplayUrl,'Runtime'=>$obj[$i]->Runtime,'Thumbnail'=>$obj[$i]->Thumbnail->MediaUrl);
 }
 break;
 case 'RelatedSearch':
 $obj = $this->request_data->d->results;
 $ic = count($obj);
 for($i=0;$i<$ic;$i++){
 $r_array[$i] = array('Keyword'=>$obj[$i]->Title);
 }
 break;
 }
 switch($this->ReturnType){
 case 'JSON':return json_encode($r_array);
 case 'ARRAY':return $r_array;
 }
 }
 
 }
 ?>
 |