;;; (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)))