ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/zoe/trunk/Rss.hpp
Revision: 51
Committed: 2004-08-23T15:03:41-07:00 (20 years, 10 months ago) by douglas
File size: 1958 byte(s)
Log Message:
Ordered XML output, templatified.

File Contents

# User Rev Content
1 douglas 9 // Zoe AIM Away Message RSS Feed Generator
2     //
3     // Seth King and Douglas Thrift
4     //
5     // $Id$
6    
7     #ifndef _Rss_hpp_
8     #define _Rss_hpp_
9    
10 douglas 25 #include "AwayMessage.hpp"
11 douglas 9
12 douglas 35 struct Rss
13     {
14 douglas 51 template<typename Iterator>
15     Rss(const Buddy& buddy, const ext::String& display,
16     const Iterator& messagesBegin, const Iterator& messagesEnd,
17     const Stamp& stamp);
18 douglas 35 };
19 douglas 9
20 douglas 51 template<typename Iterator>
21     Rss::Rss(const Buddy& buddy, const ext::String& display,
22     const Iterator& messagesBegin, const Iterator& messagesEnd,
23     const Stamp& stamp)
24     {
25     api::FileOutputStream fout(buddy.getRss() != "-" ? buddy.getRss() : "/dev/null");
26     xml::TextWriter rss(buddy.getRss() != "-" ? fout : api::Cout.GetStream());
27     xml::ScopeElement root(rss, "rss");
28    
29     rss.SetAttribute("version", "2.0");
30    
31     xml::ScopeElement channel(rss, "channel");
32    
33     rss.OpenElement("title");
34     rss.OutputText(display + "'s Away Messages");
35     rss.CloseElement();
36     rss.OpenElement("link");
37     rss.OutputText(buddy.getLink());
38     rss.CloseElement();
39     rss.OpenElement("description");
40     rss.OutputText(display + "'s AIM Away Messages from the past 30 "
41     "days.");
42     rss.CloseElement();
43     rss.OpenElement("lastBuildDate");
44     rss.OutputText(stamp.get822());
45     rss.CloseElement();
46     rss.OpenElement("generator");
47     rss.OutputText(Zoe::generator());
48     rss.CloseElement();
49     rss.OpenElement("docs");
50     rss.OutputText("http://blogs.law.harvard.edu/tech/rss");
51     rss.CloseElement();
52     rss.OpenElement("ttl");
53     rss.OutputText("60");
54     rss.CloseElement();
55    
56     for (Iterator message(messagesBegin); message != messagesEnd; ++message)
57     {
58     xml::ScopeElement item(rss, "item");
59    
60     rss.OpenElement("link");
61     rss.OutputText(message->getLink(buddy));
62     rss.CloseElement();
63     rss.OpenElement("description");
64     rss.OutputText(*message);
65     rss.CloseElement();
66     rss.OpenElement("guid");
67     rss.OutputText(message->getTag(buddy));
68     rss.CloseElement();
69     rss.OpenElement("pubDate");
70     rss.OutputText(message->getStamp().get822());
71     rss.CloseElement();
72     }
73     }
74    
75 douglas 9 #endif // _Rss_hpp_

Properties

Name Value
svn:eol-style native
svn:keywords Id