Browse code
feat: handle relative feed links
fiddlerwoaroof authored on 14/10/2022 03:05:43
Showing 1 changed files
Showing 1 changed files
... | ... |
@@ -72,10 +72,28 @@ next time, it re-raises the exception." |
72 | 72 |
(go ,start)))))))) |
73 | 73 |
|
74 | 74 |
|
75 |
+(defun relative-uri-p (uri) |
|
76 |
+ (let ((uri (puri:uri uri))) |
|
77 |
+ (not |
|
78 |
+ (and (puri:uri-scheme uri) |
|
79 |
+ (puri:uri-host uri) |
|
80 |
+ t)))) |
|
81 |
+ |
|
75 | 82 |
(defun coerce-feed-link (link feed) |
76 |
- (prog1 feed |
|
77 |
- (unless (alimenta:feed-link feed) |
|
78 |
- (setf (alimenta:feed-link feed) link)))) |
|
83 |
+ (flet ((unrelativize (url) |
|
84 |
+ (puri:render-uri (puri:merge-uris url |
|
85 |
+ link) |
|
86 |
+ nil))) |
|
87 |
+ (prog1 feed |
|
88 |
+ (unless (and (alimenta:feed-link feed) |
|
89 |
+ (not (relative-uri-p (alimenta:feed-link feed)))) |
|
90 |
+ (setf (alimenta:feed-link feed) |
|
91 |
+ (if (alimenta:feed-link feed) |
|
92 |
+ (unrelativize (alimenta:feed-link feed)) |
|
93 |
+ link))) |
|
94 |
+ (when (relative-uri-p (alimenta:link feed)) |
|
95 |
+ (setf (alimenta:link feed) |
|
96 |
+ (unrelativize (alimenta:link feed))))))) |
|
79 | 97 |
|
80 | 98 |
(defmacro with-retry ((&optional (message "retry the operation")) &body body) |
81 | 99 |
`(loop |