Browse code
Minor improvements to atom and the test server
fiddlerwoaroof authored on 23/05/2016 17:49:30
Showing 2 changed files
Showing 2 changed files
... | ... |
@@ -134,12 +134,11 @@ |
134 | 134 |
(defconstants ,@constants))) |
135 | 135 |
|
136 | 136 |
(defmethod %generate-xml ((feed feed) (feed-type (eql :atom)) &key partial) |
137 |
- (let ((parent (or ($ (inline partial) "feed" (node)) |
|
137 |
+ (let ((feed-root (or ($1 (inline partial) "feed") |
|
138 | 138 |
(plump:make-element (plump:make-root) "feed")))) |
139 |
- (prog1 parent |
|
140 |
- (let ((feed-root (make-element parent "feed"))) |
|
141 |
- (with-slots (title id updated link feed-link description) feed |
|
142 |
- ($ (inline (make-element feed-root "title")) (text title) |
|
139 |
+ (prog1 feed-root |
|
140 |
+ (with-slots (title id updated link feed-link description) feed |
|
141 |
+ ($ (inline (make-element feed-root "title")) (text title) |
|
143 | 142 |
|
144 | 143 |
(inline (make-element feed-root "link")) |
145 | 144 |
(attr "href" feed-link) (attr "rel" "self") |
... | ... |
@@ -150,12 +149,13 @@ |
150 | 149 |
(inline (make-element feed-root "id")) (text id) (node) |
151 | 150 |
(inline (make-element feed-root "summary")) (text description) (node) |
152 | 151 |
(inline (make-element feed-root "updated")) (text updated) (node) |
153 |
- )))))) |
|
152 |
+ ))))) |
|
154 | 153 |
|
155 | 154 |
|
156 | 155 |
(defmethod %generate-xml ((item item) (feed-type (eql :atom)) &key partial) |
157 |
- (let ((parent (or ($ (inline partial) "feed" (node)) |
|
158 |
- (plump:make-element (plump:make-root) "feed")))) |
|
156 |
+ (let ((parent (if (string-equal (tag-name partial) "feed") |
|
157 |
+ partial |
|
158 |
+ (plump:make-element (plump:make-root) "feed")))) |
|
159 | 159 |
(prog1 parent |
160 | 160 |
(let ((item-root (make-element parent "entry"))) |
161 | 161 |
(with-slots (title id date link content (author alimenta::author) author-uri) item |
... | ... |
@@ -77,9 +77,27 @@ |
77 | 77 |
(feed (alimenta.pull-feed::fetch-doc-from-url url))) |
78 | 78 |
(alimenta:to-feed feed :feed-link url))) |
79 | 79 |
|
80 |
+(araneus:define-view feed-to-atom (feed) |
|
81 |
+ `(200 |
|
82 |
+ (:content-type "application/xml+atom") |
|
83 |
+ (,(concatenate 'string |
|
84 |
+ "<?xml version=\"1.0\"?>" |
|
85 |
+ (plump:serialize (alimenta:generate-xml feed :feed-type :atom) |
|
86 |
+ nil))))) |
|
87 |
+ |
|
88 |
+(araneus:define-view feed-to-rss (feed) |
|
89 |
+ `(200 |
|
90 |
+ (:content-type "application/xml+rss") |
|
91 |
+ (,(concatenate 'string |
|
92 |
+ "<?xml version=\"1.0\"?>" |
|
93 |
+ (plump:serialize (alimenta:generate-xml feed :feed-type :rss) |
|
94 |
+ nil))))) |
|
95 |
+ |
|
80 | 96 |
(defvar *app* (make-instance 'ningle:<app>)) |
81 | 97 |
|
82 | 98 |
(araneus:defroutes *app* |
83 |
- (("/") (araneus:as-route 'root))) |
|
99 |
+ (("/") (araneus:as-route 'root)) |
|
100 |
+ (("/.rss") (araneus::compose-route (root) feed-to-rss)) |
|
101 |
+ (("/.atom") (araneus::compose-route (root) feed-to-atom))) |
|
84 | 102 |
|
85 |
-(defvar *handler* (clack:clackup *app* :port 4939)) |
|
103 |
+(defvar *handler* (clack:clackup *app* :port 9090 )) |