diff options
author | Case Duckworth | 2024-05-02 22:55:16 -0500 |
---|---|---|
committer | Case Duckworth | 2024-05-02 22:55:16 -0500 |
commit | a5b4863d9702a13e96665d118f9b974bb59ae7d6 (patch) | |
tree | 874c396bd745e3569c6d8c49e54a95d213eac238 /feed.scm | |
download | planet-a5b4863d9702a13e96665d118f9b974bb59ae7d6.tar.gz planet-a5b4863d9702a13e96665d118f9b974bb59ae7d6.zip |
First commit main
Diffstat (limited to 'feed.scm')
-rw-r--r-- | feed.scm | 50 |
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))) | ||