a blogengine extension

能将发表的文章标题和链接推送到饭否|叽歪

 1using System;
 2using System.Data;
 3using System.Net;
 4using System.IO;
 5using System.Web;
 6using System.Text.RegularExpressions;
 7using BlogEngine.Core;
 8using BlogEngine.Core.Web.Controls;
 9
10/// <summary>
11/// Summary description for BCpost
12/// </summary>

13[Extension("当发表新日志时,通知fanfou/jiwai/twitter""1.0""<a href=\"http://icyflash.blog.sohu.com\">Icyflash</a>")]
14public class BCpost
15{
16    static protected ExtensionSettings _settings = null;
17
18    public BCpost()
19    {
20        Post.Saved+=new EventHandler<SavedEventArgs>(Post_Saved);
21
22        ExtensionSettings settings = new ExtensionSettings("BCpost");
23        settings.AddParameter("User""User"20true);
24        settings.AddParameter("Password""Password"20true);
25        settings.IsScalar = true;
26        settings.Help = "Send a message to twitter/fanou/jiwai when you have a new post";
27        ExtensionManager.ImportSettings(settings);
28        _settings = ExtensionManager.GetSettings("BCpost");
29    }

30
31    private void Post_Saved(object sender, SavedEventArgs e)
32    {
33        Post post = (Post)sender;
34                 //Fanfou : http://api.fanfou.com/statuses/update.xml
35                 //Jiwai  : http://api.jiwai.de/statuses/update.xml 
36                 //Twitter:因为在Jiwai里配置后可以直接发送到twitter,就不提供twitter的了
37        HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://api.fanfou.com/statuses/update.xml");
38
39
40        string user = _settings.GetSingleValue("User");
41        string password = _settings.GetSingleValue("Password");
42        request.Credentials = new NetworkCredential(user, password);
43        request.Method = "POST";
44
45        request.ContentType = "application/x-www-form-urlencoded";
46        string text = post.Title + post.AbsoluteLink;
47        string param = "status=" + HttpUtility.UrlEncode(text);
48        request.ContentLength = param.Length;
49
50        StreamWriter stOut = new StreamWriter(request.GetRequestStream(), System.Text.Encoding.ASCII);
51        stOut.Write(param);
52        stOut.Close();
53        //未做错误处理,需要的自己在这里try-catch吧
54        request.GetResponse();
55    }

56}

57
posted @ 2008-04-21 09:20  Icyflash  阅读(364)  评论(1编辑  收藏  举报