Blogging API commonalities
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.