« On SSL Warnings and Text Link Ads | Main | Tomcat 6.0.20 Released »

05/30/2009

Groovy XMLRPC: Tying the Blog Pinger Scripts Together

With a little free time today while waiting for my change window to start, I've taken the four groovy xmlrpc-based scripts from this article and from this one and consolidated them into one. The format of these RPC interfaces to a blog directory's ping API are surprisingly similar, which makes me assume that some dude wrote one that everyone copies. All of these services look for a blog title, followed by the URL of your blog. Some of them also utilize an "Extended" ping service for including your site's feed URL. Essentially though, these are a bunch of HTTP POSTs—just look at a wireshark trace.

My next step is to see if I can consolidate these further and make them worthy of the respect and admiration of a mainstream groovy developer. Here's the current iteration of this script.

#!/usr/bin/env groovy
/* Written by Chris M. 
 http://blog.techstacks.com/
# The first version of this script tied the 6 XML-RPC-based 
# Blog Ping scripts together into one somewhat fancier script. 
# Not very elegant but less scripts to run. The second version
# coverts some of the variables into hashes or arrays
#
# import the XML-RPC service */
import groovy.net.xmlrpc.*

// Define the Ping URL "endpoints"
def technoratiURL = "http://rpc.technorati.com/rpc/ping"
def icerocketURL = "http://rpc.icerocket.com:10080/"
def blogsURL = "http://ping.blo.gs/"
def weblogsURL = "http://rpc.weblogs.com/RPC2"
def bloglinesURL = "http://www.bloglines.com/ping"
def blogcatalogURL = "http://rpc.blogcatalog.com/"

def urls = [
 Technorati:"http://rpc.technorati.com/rpc/ping",
 IceRocket:"http://rpc.icerocket.com:10080/",
 'Blo.gs':"http://ping.blo.gs/",
 Weblogs:"http://rpc.weblogs.com/RPC2",
 Bloglines:"http://www.bloglines.com/ping",
 BlogCatalog:"http://rpc.blogcatalog.com/"
 ]
assert urls.size() == 6
assert urls['Blo.gs'] == 'http://ping.blo.gs/'

// You'll want to make this next section your own
def myblogTitle = "blogging techstacks"
def myblogURL = "http://blog.techstacks.com/"
def myfeedURL = "http://feeds2.feedburner.com/BloggingTechstacks"

// Here is the section responsible for iterating through each ping
// url.

def technoServer = new XMLRPCServerProxy(technoratiURL)
def icerocketServer = new XMLRPCServerProxy(icerocketURL)
def blogsServer = new XMLRPCServerProxy(blogsURL)
def weblogsServer = new XMLRPCServerProxy(weblogsURL)
def bloglinesServer = new XMLRPCServerProxy(bloglinesURL)
def blogcatalogServer = new XMLRPCServerProxy(blogcatalogURL)

def technoResult = technoServer.weblogUpdates.ping(myblogTitle, myblogURL)
def icerocketResult = icerocketServer.ping(myblogTitle, myblogURL)
def blogsResult = blogsServer.weblogUpdates.extendedPing(myblogTitle, myblogURL, myfeedURL)
def weblogsResult = weblogsServer.weblogUpdates.extendedPing(myblogTitle, myblogURL, myfeedURL)
def bloglinesResult = bloglinesServer.weblogUpdates.extendedPing(myblogTitle, myblogURL, myfeedURL)
def blogcatalogResult = blogcatalogServer.weblogUpdates.ping(myblogTitle, myblogURL)

// Here is the section responsible for displaying output
// Technorati's been unavailable a lot lately due to a colo move.

if (technoResult != null)
 println "Thanks for the ping from Technorati"

if (icerocketResult != null)
 println "Thanks for the ping from IceRocket!!"

if (blogsResult != null)
 println "Thanks for the ping from Blo.gs"

if (weblogsResult != null)
 println "Thanks for the ping from Weblogs.com"

if (bloglinesResult != null)
 println "Thanks for the ping from Bloglines"

if (blogcatalogResult != null)
 println "Thanks for the ping from BlogCatalog"

TrackBack

TrackBack URL for this entry:
https://www.typepad.com/services/trackback/6a01156fbc6fe6970c011572288416970b

Listed below are links to weblogs that reference Groovy XMLRPC: Tying the Blog Pinger Scripts Together:

Comments