md2sp
Version:
Takes a markdown + TOML file and posts it to a MetaWeblog API blog.
215 lines (202 loc) • 5.85 kB
JavaScript
/**
* Module dependencies.
*/
var Client = require('./xmlrpc').Client;
var extend = require('util')._extend;
/**
* MetaWeblog API
*
* @param {String} rpc_url, the rpc api url, like `http://www.cnblogs.com/fengmk2/services/metaweblog.aspx`
* @api public
*/
var MetaWeblog = exports.MetaWeblog = function MetaWeblog(rpc_url, opts) {
this.opts = extend(MetaWeblog.defaults, opts);
this.client = new Client(rpc_url, this.opts);
};
MetaWeblog.defaults = {
ntlm: false,
santize: true
};
/**
* Data struct detail
*
* struct BlogInfo
*
* - {String} blogid
* - {String} url
* - {String} blogName
*
* struct Post
*
* - {Date} dateCreated - Required when posting.
* - {String} description - Required when posting.
* - {String} title - Required when posting.
* - {Array} categories (optional), array of string
* - {Object} enclosure (optional), struct Enclosure
* - {String} link (optional)
* - {String} permalink (optional)
* - {Any} postid (optional)
* - {Object} source (optional), struct Source
* - {String} userid (optional)
* - {Any} mt_allow_comments (optional)
* - {Any} mt_allow_pings (optional)
* - {Any} mt_convert_breaks (optional)
* - {String} mt_text_more (optional)
* - {String} mt_excerpt (optional)
*
* struct CategoryInfo
*
* - {String} description
* - {String} htmlUrl
* - {String} rssUrl
* - {String} title
* - {String} categoryid
*
* struct FileData
*
* - {String} bits, base64
* - {String} name
*
* struct UrlData
*
* - {String} url
*
* struct Enclosure
*
* - {Integer} length (optional)
* - {String} type (optional)
* - {String} url (optional)
*
* struct Source
*
* - {String} name (optional)
* - {String} url (optional)
*
*/
/**
* Deletes a post.
*
* @param {String} appKey
* @param {String} postid
* @param {String} username
* @param {String} password
* @param {Boolean} publish - Where applicable, this specifies whether
* the blog should be republished after the post has been deleted.
* @return {Boolean} Always returns true.
* @api public
*/
MetaWeblog.prototype.deletePost =
function(appKey, postid, username, password, publish, callback) {
this.client.request('blogger.deletePost',
appKey, postid, username, password, publish, callback);
};
/**
* Returns information on all the blogs a given user is a member.
*
* @param {String} appKey
* @param {String} username
* @param {String} password
* @return {Array} array of struct `BlogInfo`
* @api public
*/
MetaWeblog.prototype.getUsersBlogs =
function(appKey, username, password, callback) {
this.client.request('blogger.getUsersBlogs',
appKey, username, password, callback);
};
/**
* Updates and existing post to a designated blog using the metaWeblog API.
* Returns true if completed.
*
* @param {String} postid
* @param {String} username
* @param {String} password
* @param {Object} post, struct `Post`
* @param {Boolean} publish
* @return {Boolean}
* @api public
*/
MetaWeblog.prototype.editPost =
function(postid, username, password, post, publish, callback) {
this.client.request('metaWeblog.editPost',
postid, username, password, post, publish, callback);
};
/**
* Retrieves a list of valid categories for a post using the metaWeblog API.
* Returns the metaWeblog categories struct collection.
*
* @param {String} blogid
* @param {String} username
* @param {String} password
* @return {Array} array of struct `CategoryInfo`
* @api public
*/
MetaWeblog.prototype.getCategories =
function(blogid, username, password, callback) {
this.client.request('metaWeblog.getCategories',
blogid, username, password, callback);
};
/**
* Retrieves an existing post using the metaWeblog API.
* Returns the metaWeblog struct.
*
* @param {String} postid
* @param {String} username
* @param {String} password
* @return {Object} struct `Post`
* @api public
*/
MetaWeblog.prototype.getPost =
function(postid, username, password, callback) {
this.client.request('metaWeblog.getPost',
postid, username, password, callback);
};
/**
* Retrieves a list of the most recent existing post using the metaWeblog API.
* Returns the metaWeblog struct collection.
*
* @param {String} blogid
* @param {String} username
* @param {String} password
* @param {Integer} numberOfPosts
* @return {Array} array of struct `Post`
* @api public
*/
MetaWeblog.prototype.getRecentPosts =
function(blogid, username, password, numberOfPosts, callback) {
this.client.request('metaWeblog.getRecentPosts',
blogid, username, password, numberOfPosts, callback);
};
/**
* Makes a new file to a designated blog using the metaWeblog API.
* Returns url as a string of a struct.
*
* @param {String} blogid
* @param {String} username
* @param {String} password
* @param {Object} file, struct `FileData`
* @return {Object} struct `UrlData`
* @api public
*/
MetaWeblog.prototype.newMediaObject =
function(blogid, username, password, file, callback) {
this.client.request('metaWeblog.newMediaObject',
blogid, username, password, file, callback);
};
/**
* Makes a new post to a designated blog using the metaWeblog API.
* Returns postid as a string.
*
* @param {String} blogid
* @param {String} username
* @param {String} password
* @param {Object} post, struct `Post`
* @param {Boolean} publish
* @return {String} new post id
* @api public
*/
MetaWeblog.prototype.newPost =
function(blogid, username, password, post, publish, callback) {
this.client.request('metaWeblog.newPost',
blogid, username, password, post, publish, callback);
};