From a5b4863d9702a13e96665d118f9b974bb59ae7d6 Mon Sep 17 00:00:00 2001 From: Case Duckworth Date: Thu, 2 May 2024 22:55:16 -0500 Subject: First commit --- feed.scm | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 feed.scm (limited to 'feed.scm') diff --git a/feed.scm b/feed.scm new file mode 100644 index 0000000..dae8e2e --- /dev/null +++ b/feed.scm @@ -0,0 +1,50 @@ +;;; (planet feed) --- internal feed representation + +(declare (module (planet feed)) + (import scheme (chicken base) + (chicken time posix) + uri-common) + (export feed make-feed feed? + feed-url feed-title feed-updated feed-meta feed-items) + (export item make-item item? + item-link item-title item-updated item-meta item-content) + (export attachment make-attachment attachment? + attachment-url attachment-size attachment-mimetype)) + +(define-record-type feed + (make-feed url + title + updated + meta + items) + feed? + (url feed-url (setter feed-url)) ; URI + (title feed-title (setter feed-title)) ; String + (updated feed-updated (setter feed-updated)) ; Date + (meta feed-meta (setter feed-meta)) ; Alist: String -> String (?) + (items feed-items (setter feed-items)) ; Items + ) + +(define-record-type item + (make-item link + title + updated + meta + content + attachments) + item? + (link item-link (setter item-link)) ; URI + (title item-title (setter item-title)) ; String + (updated item-updated (setter item-updated)) ; Date + (meta item-meta (setter item-meta)) ; Alist: String -> String + (content item-content (setter item-content)) ; String + (attachments item-attachments (setter item-attachments)) ; List: Attachment* + ) + +(define-record-type attachment + ;; Basically RSS + (make-attachment url size mimetype) + attachment? + (url attachment-url (setter attachment-url)) + (size attachment-size (setter attachment-size)) + (mimetype attachment-mimetype (setter attachment-mimetype))) -- cgit 1.4.1-21-gabe81