📄 opmlhandler.cs
字号:
//------------------------------------------------------------------------------
// <copyright company="Telligent Systems">
// Copyright (c) Telligent Systems Corporation. All rights reserved.
// </copyright>
//------------------------------------------------------------------------------
using System;
using System.Collections;
using System.IO;
using System.Web;
using System.Xml;
using CommunityServer.Components;
namespace CommunityServer.Blogs.Components
{
/// <summary>
/// Summary description for OpmlHandler.
/// </summary>
public class OpmlHandler : IHttpHandler
{
protected const string styleElement = "<?xml-stylesheet type=\"text/xsl\" href=\"{0}\" media=\"screen\"?>";
public OpmlHandler()
{
}
public void ProcessRequest(HttpContext context)
{
int groupID = Globals.SafeInt(context.Request.QueryString["GroupID"], -1);
BlogUrls urls = BlogUrls.Instance();
string baseUrl = Globals.HostPath(context.Request.Url);
string _styleSheet = Globals.GetSiteUrls().OpmlStyleSheet();
context.Response.ContentEncoding = System.Text.Encoding.UTF8;
context.Response.ContentType = "text/xml";
context.Response.Cache.SetCacheability(HttpCacheability.Public);
context.Response.Cache.VaryByParams["GroupID"] = true;
context.Response.Cache.SetExpires(DateTime.Now.AddMinutes(5));
context.Response.Cache.SetValidUntilExpires(true);
XmlTextWriter writer = new XmlTextWriter(context.Response.Output);
writer.Formatting = Formatting.Indented;
// XSL Style Sheet Element
context.Response.Write(string.Format(styleElement, string.Concat(baseUrl, _styleSheet)));
// OPML Element
writer.WriteStartElement("opml");
writer.WriteAttributeString("version", "2.0");
// Head Element
writer.WriteStartElement("head");
writer.WriteElementString("title", CSContext.Current.SiteSettings.SiteName);
writer.WriteElementString("dateCreated", DateTime.Now.ToUniversalTime().ToString("r"));
writer.WriteEndElement();
// Body Element
writer.WriteStartElement("body");
// Write outline elements
if(groupID > -1)
{
Group group = WeblogGroups.GetWeblogGroup(groupID, true, false);
if (group != null)
WriteGroup(writer, group, urls, baseUrl);
}
else
{
ArrayList groups = WeblogGroups.GetWeblogGroups(true, false, false);
foreach(Group group in groups)
{
WriteGroup(writer, group, urls, baseUrl);
}
}
writer.WriteEndElement();
writer.WriteEndElement();
writer.Flush();
writer.Close();
}
protected void WriteGroup(XmlTextWriter writer, Group group, BlogUrls urls, string baseUrl)
{
writer.WriteStartElement("outline");
writer.WriteAttributeString("text", group.Name);
ArrayList weblogs = Weblogs.GetWeblogsByGroupID(group.GroupID, true, false, false);
foreach(Weblog blog in weblogs)
{
writer.WriteStartElement("outline");
writer.WriteAttributeString("type", "rss");
writer.WriteAttributeString("text", blog.Name);
writer.WriteAttributeString("title", blog.Name);
writer.WriteAttributeString("description", blog.Description);
writer.WriteAttributeString("xmlUrl", baseUrl + urls.Rss(blog.ApplicationKey));
writer.WriteAttributeString("htmlUrl", baseUrl + urls.HomePage(blog.ApplicationKey));
writer.WriteEndElement();
}
writer.WriteEndElement();
}
public bool IsReusable
{
get { return false; }
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -