۱۳۸۷/۱۱/۰۵

خواندن اطلاعات API فيدبرنر


مطلبي را در سايت راديكال 2 در مورد نمايش تعداد خواننده يك فيد ديدم كه پياده سازي آن با سي شارپ و xml serialization به صورت زير است:

using System;
using System.Xml;
using System.Xml.Serialization;

namespace Test
{
/// <summary>
/// كلاسي جهت نمايش تعداد خواننده فيد وبلاگ شما
/// <example>CFeedBurner data = new CFeedBurner { FeedID = "fhphjt61bueu08k93ehujpu234" };
/// MessageBox.Show(data.Circulation().ToString());</example>
/// </summary>
class CFeedBurner
{
/// <summary>
/// آي دي فيد شما زمانيكه به فيد برنر لاگين كرده‌ايد در تايتل صفحه مربوطه
/// </summary>
public string FeedID { get; set; }

/// <summary>
/// نگاشت فيد به يك كلاس
/// </summary>
/// <returns>كلاس متناظر با فيد</returns>
/// <exception cref="Exception">لطفا شماره شناسايي فيد را وارد كنيد</exception>
rsp deserializeFromXML()
{
if (FeedID == null)
throw new Exception("لطفا شماره شناسايي فيد را وارد كنيد");

XmlSerializer deserializer =
new XmlSerializer(typeof(rsp));
using (XmlReader reader = XmlReader.Create(
string.Format("https://feedburner.google.com/api/awareness/1.0/GetFeedData?id={0}", FeedID)))
{
return (rsp)deserializer.Deserialize(reader);
}
}

/// <summary>
/// دريافت تعداد خواننده فيد
/// </summary>
/// <returns>آمار فيد</returns>
/// <exception cref="Exception">اطلاعات فيد شما قابل دريافت نيست</exception>
public int Circulation()
{
rsp data = deserializeFromXML();
if (data == null || data.feed == null || data.feed.Length == 0)
throw new Exception("اطلاعات فيد شما قابل دريافت نيست");

if (data.feed[0].entry == null || data.feed[0].entry.Length == 0)
throw new Exception("اطلاعات فيد شما قابل پردازش نيست");

return int.Parse(data.feed[0].entry[0].circulation);
}
}
}

كلاس rsp از فايل xml فيد استاندارد سايت فيدبرنر درست شده است. روش توليد آن‌را قبلا توضيح داده بودم. به سادگي اجراي دو سطر زير است:

xsd.exe GetFeedData.xml
xsd.exe GetFeedData.xsd /c

دريافت فايل‌هاي كلاس‌هاي نامبرده شده.