-
Notifications
You must be signed in to change notification settings - Fork 3
/
mailbox.lisp
78 lines (72 loc) · 2.78 KB
/
mailbox.lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
;; This is an example of something you might use the RSS emitter for
;; if you were writing a web-based email program. Google's Gmail does
;; something like this, so I was inspired.
(in-package :xml-emitter)
;; The email structure is deliberately simplistic.
(defstruct email
from subject body date id)
;; In a real email app, we would get this from an SMTP server or a
;; database or something.
(defparameter *inbox* (list (make-email
:from "Peter Scott <[email protected]>"
:subject "Queue"
:date "Sat, 07 Sep 2002 00:00:01 GMT"
:id 34834)
(make-email
:from "Dave Pearson <[email protected]>"
:subject "THIS REALLY WORKS SKETERPOT!!!"
:date "Tue, 25 Sep 1987 13:42:41 GMT"
:id 34833)
(make-email
:from "Bubs <[email protected]>"
:subject "Bubs' Weekly Spamvertisement"
:date "Wed, 14 Aug 2003 09:23:07 GMT"
:id 34832)))
(defun emit-inbox-feed (username stream)
"Emit an RSS 2.0 feed for *INBOX* to STREAM, marking it as belonging
to USERNAME."
(with-rss2 (stream)
;; Emit the header, with information about the feed
(rss-channel-header (format nil "Inbox for ~A" username)
(format nil "http://rss.mywebmail.com/~A.rss"
username)
:description "Your email inbox")
(dolist (email *inbox*)
;; Emit an entry for a single email
(rss-item (email-subject email)
:link (format nil "http://www.mywebmail.com/viewemail?id=~A"
(email-id email))
:author (email-from email)
:pubDate (email-date email)
:description (email-body email)))))
;; Evaluate this, and you should get the output below.
(emit-inbox-feed "sketerpot" *standard-output*)
#|
<?xml version="1.0" encoding="ISO-8859-1"?>
<rss version="2.0">
<channel>
<title>Inbox for sketerpot</title>
<link>http://rss.mywebmail.com/sketerpot.rss</link>
<description>Your email inbox</description>
<language>en-us</language>
<item>
<title>Queue</title>
<link>http://www.mywebmail.com/viewemail?id=34834</link>
<author>Peter Scott <[email protected]></author>
<pubDate>Sat, 07 Sep 2002 00:00:01 GMT</pubDate>
</item>
<item>
<title>THIS REALLY WORKS SKETERPOT!!!</title>
<link>http://www.mywebmail.com/viewemail?id=34833</link>
<author>Dave Pearson <[email protected]></author>
<pubDate>Tue, 25 Sep 1987 13:42:41 GMT</pubDate>
</item>
<item>
<title>Bubs' Weekly Spamvertisement</title>
<link>http://www.mywebmail.com/viewemail?id=34832</link>
<author>Bubs <[email protected]></author>
<pubDate>Wed, 14 Aug 2003 09:23:07 GMT</pubDate>
</item>
</channel>
</rss>
|#