Feedburner'ı değişikliklerde pinglemek

0 dakikada yazıldı

34829 defa okundu

Düzenle

Blog yazmak ciddi ciddi apayrı bir işmiz :) Örneğin ben hiç düşünmemiştim ki bloguma yazı eklediğimizde nasıl hemen FeedBurner bunu görüyor. Nasıl oluyor da çat çat her tarafa otomatik publish oluyor. Feedburner çılgın çılgın gelip bakıyor sürekli sanarken aslında durumun pek de öyle olmadığını öğrendim :) Aslında blog sistemlerinin hepsi gidip bu üçüncü parti yerlere XML-RPC ile Ping atıyorlarmış. Hatta bunu otomatik hale getiren http://pingomatic.com/ gibi yerler var. Tamam da tüm bunları nasıl otomatik hale getireceğiz? Yani bloga bir yazı girdiğimde veya yazıyı değiştirdiğimde nasıl olacak da tüm bu servisleri haberdar edeceğim?

[VB]

        Public Shared Sub Send()\             Execute("http://ping.feedburner.com")\             Execute("http://rpc.pingomatic.com/RPC2")\         End Sub\ \         Private Shared Sub Execute(url As String)\             Try\                 Dim request As HttpWebRequest = DirectCast(WebRequest.Create(url), HttpWebRequest)\                 request.Method = "POST"\                 request.ContentType = "text/xml"\                 request.Timeout = 3000\ \                 AddXmlToRequest(request)\                 Dim Res = request.GetResponse()\                 Dim Reader As New StreamReader(Res.GetResponseStream())\                 Dim Final = Reader.ReadToEnd\             Catch generatedExceptionName As Exception\                 Helpers.ErrorReport(generatedExceptionName.Message, generatedExceptionName.StackTrace)\             End Try\         End Sub

İşte yukarıdaki kod işinizi görecektir. Basit bir POST işlemi ile Ping yapılabiliyor. Catch'deki gereksiz loglama benim blogla alakalı :) onu kaldırdım oradan. Şimdi kodu okuyanlarınız tabi AddXmlToRequest nerede diye soracaklar. İşin sırrı da biraz orada zaten.

[VB]

        Private Shared Sub AddXmlToRequest(request As HttpWebRequest)\             Dim stream As IO.Stream = DirectCast(request.GetRequestStream(), IO.Stream)\             Using writer As New XmlTextWriter(stream, Encoding.ASCII)\                 writer.WriteStartDocument()\                 writer.WriteStartElement("methodCall")\                 writer.WriteElementString("methodName""weblogUpdates.ping")\                 writer.WriteStartElement("params")\                 writer.WriteStartElement("param")\                 writer.WriteElementString("value""Daron Yöndem")\                 writer.WriteEndElement()\                 writer.WriteStartElement("param")\                 writer.WriteElementString("value""http://feeds2.feedburner.com/daronyondem")\                 writer.WriteEndElement()\                 writer.WriteEndElement()\                 writer.WriteEndElement()\             End Using\         End Sub

Benim blogda ping ile beraber "Hey burada değişiklik var!" dediğim tek yer feedburner RSS linkim olduğu için onu direk kodun içine gömdüm. Sizin kodunuzda parametrik olabilir bu kısım tabi ki :) Kabaca yolladığım XML aşağıdaki şekilde;

[XML]

\xml version="1.0"?>\ \<methodCall>\   \<methodName>weblogUpdates.ping\methodName\>\   \<params>\     \<param>\       \<value>Hoboloy\value\>\     \param\>\     \<param>\       \<value>http://www.hoyhoy.com/\value\>\     \param\>\   \params\>\ \methodCall\>

Buradaki methodName önemli, geri kalanlar ise sizin istediğiniz şekilde değiştirebileceğiniz şeyler. Unutmayın bunu sadece yeni içerik eklendiğinde değil içerik değişikliğinde de yapmanız gerekiyor.

Hepinize kolay gelsin ;)