Archive for the ‘Source Code’ Category

Error messages for abnormal feeds in FeedBurner API and cURL functions

February 18, 2009

I used FeedBurner API in my last project (FeedRoll). I needed to know error number for abnormal feeds.  FeedBurner API returns below error numbers:

1: Feed Not Found
2: This feed does not permit Awareness API access
5: Missing required parameter (URI)
6: Malformed parameter (DATES)

I used cURL (Client URL Library Functions) for Perform a cURL session and next Parsed XML via SimpleXML Class. But didn’t available data for feed that didn’t permit Awareness API access. Because cURL was Unauthorized.
In this case we can use HTTP code that corresponding to ‘http_code’ index of the array returned by curl_getinfo. I write below code for it:

< ?php
$twodayago = date('Y-m-d', strtotime('-2 days', time()));
$onedayago = date('Y-m-d', strtotime('-1 days', time()));
$today = date('Y-m-d');

$api = "https://feedburner.google.com/api/awareness/1.0/GetFeedData?uri=$feedid&dates=$twodayago,$onedayago";

//Initialize a cURL session
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $api);
$data = curl_exec($ch);
$base_code = curl_getinfo($ch);
curl_close($ch);

if ($base_code&#91;'http_code'&#93;=='401'){
	$burner_count_circulation = 'This feed does not permit Awareness API access';
	$burner_date = $today;
} else {

	$xml = new SimpleXMLElement($data); //Parse XML via SimpleXML Class
	$bis = $xml->attributes();  //Bis Contain first attribute, It usually is ok or fail in FeedBurner

	if ($bis=='ok'){
		foreach ($xml->feed as $feed) {
			if ($feed->entry[1]['circulation']=='0'){
				$burner_count_circulation = $feed->entry[0]['circulation'];
				$burner_date  =  $feed->entry[0]['date'];
			} else {
				$burner_count_circulation = $feed->entry[1]['circulation'];
				$burner_date  =  $feed->entry[1]['date'];
			}
		}
	}

	if ($bis=='fail'){
		switch ($xml->err['code']) {
			case 1:
				$burner_count_circulation = 'Feed Not Found';
				break;
			case 5:
				$burner_count_circulation = 'Missing required parameter (URI)';
				break;
			case 6:
				$burner_count_circulation = 'Malformed parameter (DATES)';
				break;
		}
		$burner_date = $today;
	}

}

echo $burner_count_circulation.' @ '.$burner_date;
 ?>