During the Christmas time and this weekend, I’ve managed a fair amount of programming on the blogging tool. To reiterate, this is a project that stems from a post in the TypePad User Forum inquiring any Windows equivalent of the Kung-Log blogging tool.
I’ve started developing a Windows application in C#/.NET and it uses a third party XML-RPC .NET assembly to handle the communication between the client application and TypePad server. In my previous post, I mentioned that the XML-RPC.Net library was not conducive to OO development. This is not really true once I developed a series of wrapper classes around the actually XML-RPC proxy interface and all the XML data structures. Now the class hierarchy is very clean and very OO.
One benefit of this wrapper class approach is that the extra layer of abstraction will allow me to implement new communication protocol with relative ease. Atom API is on my to-do list and it is SOAP base and thus requires a completely different low-level approach. Since the basic blogging interface remains unchanged (i.e. get blogs, get posts, new post, etc.) the only thing that I need to develop is the actual communication library and add the option of either instantiating the XML-RPC or Atom in the service wrapper class.
The major outstanding issue I am having right now concerns the date/time format returns by TypePad. In XML-RPC spec, the date/time field is defined as ISO8601 format. But in reality, it is not quite. The only acceptable format in XML-RPC is YYYYMMDDThh:mm:ss, which is a mixture of basic ISO8601 format and extended format. Notice that this format does not take into account of timezones, which is the problem I am facing.
TypePad returns date/time in true ISO8601 date/time extended format, i.e. YYYY-MM-DDThh:mm:ssZ, where Z denotes UTC (or GMT) timezone. Of course, to be spec compliant the XML-RPC.Net library throws an exception complaining about incorrect format string. After reading the spec and many messages on both the XML-RPC Yahoo group and XML-RPC.Net Yahoo group, it turns out that the XML-RPC spec is a bit bogus in defining the date/time field as ISO8601 since the format is not compliant at all.
Thus, I am in the situation where everyone (TypePad, XML-RPC spec, XML-RPC.Net library, etc.) are right but wrong at the same time. I can’t get TypePad to change their date/time implementation (or can I?) nor get the XML-RPC spec updated (many developers had tried and failed). The only recourse for me right now is hoping that the author of the XML-RPC.NET library, Charles Cook, will patch the library to allow true ISO8601 date/time string in the data.
Update: I stumbled into this thread in MovableType Forum and it explains everything. I presume that TypePad has not been upgraded to MT v2.65 yet which has the fix for the date/time issue.