Feedburner'ı değişikliklerde pinglemek

0 dakikada yazıldı

34909 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 ;)