Here is some of the common ground I can see between the metaweblog api and CS::Blogs BlogService asmx.

Blog/Authentication:

  • UserName
  • Password
  • BlogID/BlogName

Post/Entry:

  • DateCreated/Date
  • Description/Body
  • Title
  • string[] Categories (nice!)
  • PostID

Non-Conformities (for Posts):

  • Metablog API
    • Enclosure (although this is not used by CS::Blogs or .Text)
    • link
    • permalink
    • Source (name and url, was supported by .Text, not so sure about CS::Blogs)
    • userid
  • BlogService.asmx
    • Excerpt
    • Name (I guess this is for url rewriting)
    • Enable Comments
    • Enable Trackbacks
    • Moderate Comments
    • Enable Ratings
    • Syndicate
    • Syndicate Excerpt (I guess you have to define an excerpt for this to work?)
    • Syndicate Root (for communities?)
    • DisplayOnHome (again, communities?)
    • IsArticle (I really dig this one. I've wanted to be able to edit articles from the desktop for a long time.)

I've also been looking at ATOM a little bit - there doesn't seem to be any mention of categories in atom, which kinda sucks considering categories are a nice way to filter content.

All of the apis, including atom, have one other thing in common: getting general blog information is usually a two-step process. As an end user, I must supply a username, a password, and a url (although the atom api lets you enter a homepage url with a <link/> element that points to the service url (v1.0 of CS::Blogs asks for a blogname, too. Maybe this says that you should only work with one blog at a time?)). Then I get a list of blogs that I can edit with the credentials supplied. Then I can create, update, or delete a post. I can also get a list of recent entries (and articles in the case of the BlogService.asmx).

With atom, on blogger at least, you are required to use https:// as the uri scheme. Not a big deal, this just means that the common denominator for a blog has to have a couple of booleans: UseSSL and SupportsCategories, because those two are what separates atom and the apis of CS::Blogs from a coding standpoint. Since I'm going to be using libraries to handle the xml transfers (xml-rpc, soap, or rest) I could care less what the xml looks like.

Speaking of libraries, the code that I have for handling the metaweblog api also includes support for the old blogger xml-rpc api (thanks, dasBlog!), so I'll probably include support for posting to that api as well in the new version of PostXING.