Cook Computing

Webloging API Blues

February 23, 2003 Written by Charles Cook

I've been spending some time recently trying to develop .NET interfaces to represent the various blogging APIs. These interfaces can then be used with XML-RPC.NET to implement blogging clients. I've tried to make the APIs as generic as possible but this has proved to be difficult, not least determining what the APIs actually support. To iterate a point I made a few days ago, why does nearly everything concerned with XML-RPC have to be so vaguely specified?

I thought the Blogger API would be fairly straightforward but some key methods - deletePost and getRecentPosts - are not mentioned in the Blogger API spec. Also, its not clear what the types of items such as postid and userid are. These can be either strings or integers depending on the server (I've been testing with Movable Type, EraBlog, and Radio).

The MetaWeblog API is worse. The spec is a typical Dave Winer stream of consciousness effort and the only effective way to determine what various servers support is through trial and error with ProxyTrace.

As far as XML-RPC.NET is concerned, there is the problem that if a separate interface is used for each API, say IBlogger and IMetaWeblog, then its not possible to generate a proxy automatically using the XmlRpcProxyGen class (it can only generate a proxy derived from a single interface). This wouldn't be a problem if the two APIs were self-contained but MetaWeblog doesn't have a deletePost method (and getRecentPosts is missing in the Radio implementation). So until I enhance code generation to handle derivation from multiple proxies, it will be necessary to create two proxies, one for each interface.

By the way, I've written this entry, and the previous, using a blogging client I've written as part of the above investigation. I don't know if I'll ever polish it up enough for public release but it certainly beats using the web interface to Movable Type.