summary refs log tree commit diff stats
path: root/feed.scm
diff options
context:
space:
mode:
Diffstat (limited to 'feed.scm')
-rw-r--r--feed.scm50
1 files changed, 50 insertions, 0 deletions
diff --git a/feed.scm b/feed.scm new file mode 100644 index 0000000..dae8e2e --- /dev/null +++ b/feed.scm
@@ -0,0 +1,50 @@
1;;; (planet feed) --- internal feed representation
2
3(declare (module (planet feed))
4 (import scheme (chicken base)
5 (chicken time posix)
6 uri-common)
7 (export feed make-feed feed?
8 feed-url feed-title feed-updated feed-meta feed-items)
9 (export item make-item item?
10 item-link item-title item-updated item-meta item-content)
11 (export attachment make-attachment attachment?
12 attachment-url attachment-size attachment-mimetype))
13
14(define-record-type feed
15 (make-feed url
16 title
17 updated
18 meta
19 items)
20 feed?
21 (url feed-url (setter feed-url)) ; URI
22 (title feed-title (setter feed-title)) ; String
23 (updated feed-updated (setter feed-updated)) ; Date
24 (meta feed-meta (setter feed-meta)) ; Alist: String -> String (?)
25 (items feed-items (setter feed-items)) ; Items
26 )
27
28(define-record-type item
29 (make-item link
30 title
31 updated
32 meta
33 content
34 attachments)
35 item?
36 (link item-link (setter item-link)) ; URI
37 (title item-title (setter item-title)) ; String
38 (updated item-updated (setter item-updated)) ; Date
39 (meta item-meta (setter item-meta)) ; Alist: String -> String
40 (content item-content (setter item-content)) ; String
41 (attachments item-attachments (setter item-attachments)) ; List: Attachment*
42 )
43
44(define-record-type attachment
45 ;; Basically RSS <enclosure>
46 (make-attachment url size mimetype)
47 attachment?
48 (url attachment-url (setter attachment-url))
49 (size attachment-size (setter attachment-size))
50 (mimetype attachment-mimetype (setter attachment-mimetype)))