Infrequently Noted

Alex Russell on browsers, standards, and the process of progress.

Yahoo Pipes Support in Dojo

As many a Dojo user is aware, we've been supporting Yahoo's forward-thinking JSON-P style endpoints for their various web services for a long time. We even have a nice RPC wrapper and simple description format for most of them. And no, you don't have to download YUI to get at this stuff...it's all pure Dojo. We make it easier to work with Yahoo's services than Yahoo does.

And that now includes Yahoo Pipes. It's cool and interesting to be able to call out to Pipes from your server-side web-app, but what the mashup-mad word REALLY needs is to be able to do the same thing from a browser. Despite not really being in the docs anywhere, Yahoo's Kent Brewster points out that Pipes supports a JSON-P callback argument. Awesome!

The structure of Pipes URLs are different than every other Yahoo service (much like flickr. ugg.), so there's no Dojo RPC for it yet, but you can easily query a pipe using dojo.io.bind and the ScriptSrcIO transport:

// get news results for Cometd
dojo.require("dojo.io.ScriptSrcIO"); // the x-domain magic
dojo.require("dojo.debug.console"); // firebug integration
dojo.io.bind({
// grab this URL from the pipe you're interested in
url: "http://pipes.yahoo.com/pipes/fELaGmGz2xGtBTC3qe5lkA/run",
mimetype: "text/json",
transport: "ScriptSrcTransport",
jsonParamName: "_callback", // aha!
content: {
"_render": "json",
"textinput1": "cometd"
},
load: function(type, data, evt){
// log the response out to the Firebug console
dojo.require("dojo.json");
dojo.debug(dojo.json.serialize(arguments));
}
});

Pipes is a bit slow right now, so you might not want to use this for main page content, but it's a great way to decorate pages, blogs, and other kinds of data with a lot more context from all over the web.