Update of /project/lisppaste/cvsroot/lisppaste2
In directory common-lisp.net:/tmp/cvs-serv31311
Modified Files:
variable.lisp web-server.lisp
Log Message:
RSS! RSS! RSS!
Date: Fri Jan 30 11:08:31 2004
Author: bmastenbrook
Index: lisppaste2/variable.lisp
diff -u lisppaste2/variable.lisp:1.6 lisppaste2/variable.lisp:1.7
--- lisppaste2/variable.lisp:1.6 Sat Jan 17 13:07:21 2004
+++ lisppaste2/variable.lisp Fri Jan 30 11:08:31 2004
@@ -1,4 +1,4 @@
-;;;; $Id: variable.lisp,v 1.6 2004/01/17 18:07:21 bmastenbrook Exp $
+;;;; $Id: variable.lisp,v 1.7 2004/01/30 16:08:31 bmastenbrook Exp $
;;;; $Source: /project/lisppaste/cvsroot/lisppaste2/variable.lisp,v $
;;;; See the LICENSE file for licensing information.
@@ -36,6 +36,9 @@
(defparameter *submit-paste-url*
(araneida:merge-url *paste-external-url* "submit"))
+
+(defparameter *rdf-url*
+ (araneida:merge-url *paste-external-url* "list.rdf"))
(defparameter *paste-listener*
(let ((fwd-url (araneida:copy-url *paste-url*)))
Index: lisppaste2/web-server.lisp
diff -u lisppaste2/web-server.lisp:1.18 lisppaste2/web-server.lisp:1.19
--- lisppaste2/web-server.lisp:1.18 Sat Jan 17 13:07:21 2004
+++ lisppaste2/web-server.lisp Fri Jan 30 11:08:31 2004
@@ -1,4 +1,4 @@
-;;;; $Id: web-server.lisp,v 1.18 2004/01/17 18:07:21 bmastenbrook Exp $
+;;;; $Id: web-server.lisp,v 1.19 2004/01/30 16:08:31 bmastenbrook Exp $
;;;; $Source: /project/lisppaste/cvsroot/lisppaste2/web-server.lisp,v $
;;;; See the LICENSE file for licensing information.
@@ -24,6 +24,8 @@
(defclass display-paste-handler (araneida:handler) ())
+(defclass rss-handler (araneida:handler) ())
+
(defmethod araneida:handle-request-response ((handler new-paste-handler) method request)
(araneida:request-send-headers request :expires 0)
(let* ((annotate-string (araneida:body-param "annotate" (araneida:request-body request)))
@@ -94,6 +96,27 @@
*pastes*)))
,@(bottom-links)))))
+(defmethod araneida:handle-request-response ((handler rss-handler) method request)
+ (araneida:request-send-headers request :expires 0)
+ (format (araneida:request-stream request) "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>~%")
+ (araneida:html-stream
+ (araneida:request-stream request)
+ `((|rss| :|version| "2.0")
+ ,(format nil
+ "<channel><title>Lisppaste pastes</title><link>~A</link><description>Pastes in this pastebot</description>~{~A~}</channel>~%"
+ (araneida:urlstring *list-paste-url*)
+ (reverse (mapcar #'(lambda (paste)
+ (format nil "<item><link>~A</link><pubDate>~A</pubDate><title>\"~A\" by ~A</title><description>~A</description></item>"
+ (concatenate 'string
+ (araneida:urlstring
+ (araneida:merge-url *display-paste-url*
+ (prin1-to-string (paste-number paste)))) "#" (prin1-to-string (paste-number paste)))
+ (date:universal-time-to-rfc-date (paste-universal-time paste))
+ (encode-for-pre (paste-title paste))
+ (encode-for-pre (paste-user paste))
+ (format nil "Paste to channel ~A with ~A annotations." (encode-for-pre (paste-channel paste)) (length (paste-annotations paste)))))
+ *pastes*))))))
+
(defun new-paste-form (request &key (message "") (annotate nil))
(araneida:html-stream
(araneida:request-stream request)
@@ -268,3 +291,7 @@
(make-instance 'display-paste-handler)
(araneida:urlstring *display-paste-url*) nil)
+(araneida:install-handler
+ (araneida:http-listener-handler *paste-listener*)
+ (make-instance 'rss-handler)
+ (araneida:urlstring *rss-url*) nil)
\ No newline at end of file