Blogging Tool Development Update

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.

Advertisements

5 comments

  1. Alex

    Thank! I am glad someone find it interesting 🙂 I was tearing my hair out over this date/time issue.

    There are some big gaps remain to be implemented. Top of the list is uploading file. Right now, there is no code for that. Second on the list is multiple categories assignment to post. Right now it is single category only. And thirdly, the menu structure sucks big time right now 😀

    I will try to post some screenshots this week…

  2. Alex

    Thanks for the offer snowman! I am working with Ben from TypePad/Six Apart on figuring out the date/time format issue.

    Also, this weekend I’ve fixed the single category issue. Now it’s multi-selectable! And I’ve started coding the file upload part.

    It’s getting close to testing time. I do need some help in icons and toolbar images…

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s