Skip to content

Commit 7e1ca56

Browse files
committed
Allow XML for empty feeds (fixes #9)
1 parent 98e890d commit 7e1ca56

File tree

2 files changed

+21
-3
lines changed

2 files changed

+21
-3
lines changed

splitflap-lib/private/feed.rkt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@
141141
(raise-argument-error 'express-xml "valid URL (required for #<feed>)" feed-url))
142142
(match-define (feed feed-id site-url feed-name entries) f)
143143
(define entries-sorted (sort entries entry-newer?))
144-
(define last-updated (feed-item-updated (car entries-sorted)))
144+
(define last-updated (if (pair? entries-sorted) (feed-item-updated (car entries-sorted)) (infer-moment)))
145145
(define to-xml? (memq result-type '(xml xml-string)))
146146

147147
(define feed-xpr
@@ -255,7 +255,7 @@
255255
`(itunes:category [[text ,cat1]]
256256
(itunes:category [[text ,cat2]]))]
257257
[(? string? c) `(itunes:category [[text ,c]])]))
258-
(define last-updated (episode-updated (car episodes-sorted)))
258+
(define last-updated (if (pair? episodes-sorted) (episode-updated (car episodes-sorted)) (infer-moment)))
259259
(define to-xml? (memq result-type '(xml xml-string)))
260260

261261
(define feed-xpr

splitflap-lib/tests.rkt

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,10 @@ END
170170
"Kate Poster Posts"
171171
(list entry1 entry2 entry3-conflict))))
172172

173+
;; Empty feeds should be allowed
174+
(check-not-exn (lambda () (express-xml (feed site-id "https://example.com" "Posts" '()) 'atom "https://example.com")))
175+
(check-not-exn (lambda () (express-xml (feed site-id "https://example.com" "Posts" '()) 'rss "https://example.com")))
176+
173177
;; Check podcast episode output
174178
(define test-ep1
175179
(parameterize ([current-timezone 0])
@@ -341,4 +345,18 @@ END
341345
(list "Leisure" "Animation & Manga")
342346
"https://example.com/cover-art.jpg"
343347
(person "Kate Poster" "kate@example.com")
344-
#:explicit? #t)))
348+
#:explicit? #t)))
349+
350+
;; Empty podcast feeds should be allowed
351+
(check-not-exn
352+
(lambda ()
353+
(express-xml (podcast site-id
354+
"https://example.com"
355+
"Podcast"
356+
'()
357+
(list "Sports" "Swimming")
358+
"https://example.com/cover-art.jpg"
359+
(person "Kate Poster" "kate@example.com")
360+
#:explicit? #f)
361+
'rss
362+
"https://example.com")))

0 commit comments

Comments
 (0)