跳至主要内容

C# XML-RPC MetaWeblog API


using CookComputing.XmlRpc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace zixian.wrok
{
    /// <summary>
    /// 基本信息         
    /// </summary>
    [XmlRpcMissingMapping(MappingAction.Ignore)]
    public struct UserBlog
    {
        public string url;
        public string blogid;
        public string blogName;
    }
    /// <summary>  
    /// 用户信息         
    /// </summary>          
    [XmlRpcMissingMapping(MappingAction.Ignore)]
    public struct UserInfo
    {
        public string url;
        public string blogid;
        public string blogName;
        public string firstname;
        public string lastname;
        public string email;
        public string nickname;
    }
    /// <summary>
    /// 分类信息
    /// </summary>
    [XmlRpcMissingMapping(MappingAction.Ignore)]
    public struct Category
    {
        public string description;
        public string title;
    }
    /// <summary>
    /// 文章信息      
    /// </summary>
    [XmlRpcMissingMapping(MappingAction.Ignore)]
    public struct Post
    {
        public string title;//标题
        public string description;//发布内容
        public string post_type;//"post" or "page"
        public DateTime dateCreated;//创建日期
        public string[] categories;//分类
    }
    /// <summary>
    /// 多媒体信息
    /// </summary>
    [XmlRpcMissingMapping(MappingAction.Ignore)]
    public struct Data
    {
        public string name;
        public string type;
        public byte[] bits;     // ---> CHANGED
        public bool overwrite;
    }
    /// <summary>
    /// 多媒体返回信息
    /// </summary>
    public struct DataReturn
    {
        public string id;
        public string file;
        public string url;
        public string type;
    }

    public class XmlRpc : XmlRpcClientProtocol
    {
        /// <summary>
        /// 得到最近发布的帖子         
        /// </summary>
        /// <param name="blogid"></param>
        /// <param name="username"></param>
        /// <param name="password"></param>
        /// <param name="numberOfPosts"></param>
        /// <returns></returns>
        [XmlRpcMethod("metaWeblog.getRecentPosts")]
        public Post[] GetRecentPosts(string blogid, string username, string password, int numberOfPosts)
        {

            return (Post[])this.Invoke("GetRecentPosts", new object[] { blogid, username, password, numberOfPosts });
        }
        /// <summary>
        /// 增加一个最新的帖子         
        /// </summary>
        /// <param name="blogid"></param>
        /// <param name="username"></param>
        /// <param name="password"></param>
        /// <param name="content"></param>
        /// <param name="publish"></param>
        /// <returns></returns>
        [XmlRpcMethod("metaWeblog.newPost")]
        public string NewPost(string blogid, string username, string password, Post content, bool publish)
        {

            return (string)this.Invoke("NewPost", new object[] { blogid, username, password, content, publish });
        }
        /// <summary>
        /// 更新一个帖子         
        /// </summary>
        /// <param name="postid"></param>
        /// <param name="username"></param>
        /// <param name="password"></param>
        /// <param name="content"></param>
        /// <param name="publish"></param>
        /// <returns></returns>
        [XmlRpcMethod("metaWeblog.editPost")]
        public bool EditPost(string postid, string username, string password, Post content, bool publish)
        {
            return (bool)this.Invoke("EditPost", new object[] { postid, username, password, content, publish });
        }
        /// <summary>
        /// 删除一个帖子         
        /// </summary>
        /// <param name="appKey"></param>
        /// <param name="postid"></param>
        /// <param name="username"></param>
        /// <param name="password"></param>
        /// <param name="publish"></param>
        /// <returns></returns>
        [XmlRpcMethod("blogger.deletePost")]
        public bool DeletePost(string appKey, string postid, string username, string password, bool publish)
        {
            return (bool)this.Invoke("DeletePost", new object[] { appKey, postid, username, password, publish });
        }
        /// <summary>
        /// 得到用户的博客清单         
        /// </summary>
        /// <param name="appKey"></param>
        /// <param name="username"></param>
        /// <param name="password"></param>
        /// <returns></returns>
        [XmlRpcMethod("blogger.getUsersBlogs")]
        public UserBlog[] GetUsersBlogs(string appKey, string username, string password)
        {

            return (UserBlog[])this.Invoke("GetUsersBlogs", new object[] { appKey, username, password });
        }
        /// <summary>
        /// 得到用户信息         
        /// </summary>
        /// <param name="appKey"></param>
        /// <param name="username"></param>
        /// <param name="password"></param>
        /// <returns></returns>
        [XmlRpcMethod("blogger.getUserInfo")]
        public UserInfo GetUserInfo(string appKey, string username, string password)
        {

            return (UserInfo)this.Invoke("GetUserInfo", new object[] { appKey, username, password });
        }
        /// <summary>
        /// 获取一个帖子         
        /// </summary>
        /// <param name="postid"></param>
        /// <param name="username"></param>
        /// <param name="password"></param>
        /// <returns></returns>
        [XmlRpcMethod("metaWeblog.getPost")]
        public Post GetPost(string postid, string username, string password)
        {
            return (Post)this.Invoke("GetPost", new object[] { postid, username, password });
        }
        /// <summary>
        /// 得到博客分类         
        /// </summary>
        /// <param name="blogid"></param>
        /// <param name="username"></param>
        /// <param name="password"></param>
        /// <returns></returns>
        [XmlRpcMethod("metaWeblog.getCategories")]
        public Category[] GetCategories(string blogid, string username, string password)
        {
            return (Category[])this.Invoke("GetCategories", new object[] { blogid, username, password });
        }
        /// <summary>
        /// 上传媒体
        /// </summary>
        /// <param name="blogid"></param>
        /// <param name="username"></param>
        /// <param name="password"></param>
        /// <param name="theImage"></param>
        /// <param name="overwrite"></param>
        /// <returns></returns>
        [XmlRpcMethod("metaWeblog.newMediaObject")]
        public DataReturn NewMediaObject(string blogid, string username, string password, Data theImage, bool overwrite)
        {
            return (DataReturn)this.Invoke("NewMediaObject", new object[] { blogid, username, password, theImage, overwrite });
        }
    }
}


评论

此博客中的热门博文