Browse code
feat: improve detection of self-link in atom feeds
fiddlerwoaroof authored on 05/05/2023 06:17:39
Showing 1 changed files
Showing 1 changed files
... | ... |
@@ -16,6 +16,7 @@ |
16 | 16 |
(defclass atom-feed (alimenta:feed) |
17 | 17 |
((subtitle :initarg :subtitle :initform nil :accessor subtitle) |
18 | 18 |
(id :initarg :id :initform nil :accessor id) |
19 |
+ (links :initarg :links :initform nil :accessor links) |
|
19 | 20 |
(icon :initarg :icon :initform nil :accessor icon) |
20 | 21 |
(categories :initarg :categories :type (or null list) :initform nil :accessor categories) |
21 | 22 |
(logo :initarg :logo :initform nil :accessor logo) |
... | ... |
@@ -101,8 +102,18 @@ |
101 | 102 |
(doc-id (get-feed-elem "feed > id")) |
102 | 103 |
(doc-updated (awhen (get-feed-elem "feed > updated") |
103 | 104 |
(local-time:parse-timestring it))) |
104 |
- (doc-link (get-feed-elem-attr "feed > link[rel=alternate]" "href")) |
|
105 |
- (doc-feed-link (or feed-link (get-feed-elem-attr "feed > link[rel=self]" "href"))) |
|
105 |
+ (doc-link (or (get-feed-elem-attr "feed > link[rel=alternate]" "href") |
|
106 |
+ (get-feed-elem-attr "feed > link:not([rel=self])" "href") |
|
107 |
+ (get-feed-elem-attr "feed > link[rel=self]" "href") |
|
108 |
+ feed-link)) |
|
109 |
+ |
|
110 |
+ (doc-links (coerce ($ (inline xml-dom) |
|
111 |
+ "feed > link" |
|
112 |
+ (combine (attr "rel") |
|
113 |
+ (attr "href"))) |
|
114 |
+ 'list)) |
|
115 |
+ (doc-feed-link (or feed-link |
|
116 |
+ (get-feed-elem-attr "feed > link[rel=self]" "href"))) |
|
106 | 117 |
(doc-categories ($ (inline xml-dom) "feed > category" |
107 | 118 |
(combine (attr "term") (attr "label") (attr "scheme")) |
108 | 119 |
(map-apply #'make-category))) |
... | ... |
@@ -113,8 +124,7 @@ |
113 | 124 |
:icon doc-icon |
114 | 125 |
:logo doc-logo |
115 | 126 |
:link doc-link |
116 |
- :updated doc-updated |
|
117 |
- :id doc-id |
|
127 |
+ :links doc-links |
|
118 | 128 |
:feed-link doc-feed-link |
119 | 129 |
:subtitle doc-subtitle |
120 | 130 |
:categories (coerce doc-categories 'list) |