summaryrefslogtreecommitdiff
path: root/mulkcms-hunchentoot.lisp
diff options
context:
space:
mode:
authorMatthias Andreas Benkard <code@mail.matthias.benkard.de>2011-03-10 16:23:40 +0100
committerMatthias Andreas Benkard <code@mail.matthias.benkard.de>2011-03-10 16:23:40 +0100
commitd5005613677cdf45dbd1cf167aaaa8a22d576573 (patch)
treee6908eae01fd5a60e02c0feea1f35d8a6312a3cf /mulkcms-hunchentoot.lisp
parent4f4cdd76d12e396fdf22c22db4716df6045b8fad (diff)
Handle simple article requests.
Diffstat (limited to 'mulkcms-hunchentoot.lisp')
-rw-r--r--mulkcms-hunchentoot.lisp30
1 files changed, 30 insertions, 0 deletions
diff --git a/mulkcms-hunchentoot.lisp b/mulkcms-hunchentoot.lisp
index 0767fe7..205534f 100644
--- a/mulkcms-hunchentoot.lisp
+++ b/mulkcms-hunchentoot.lisp
@@ -1,2 +1,32 @@
(in-package #:mulkcms-hunchentoot)
+(define-easy-handler handle-admin-request (action)
+ ;; XXX
+ )
+
+(defun dispatch-static-file-request (request)
+ ;; FIXME Can use paths like "/../mulkcms.lisp" or "//boot/initrd.img".
+ ;; That's bad.
+ (let* ((relative-path (subseq (script-name request) 1))
+ (file (merge-pathnames relative-path *static-files*)))
+ (and (probe-file file) (lambda () (handle-static-file file)))))
+
+(defun dispatch-mulkcms-request (request)
+ (let* ((relative-path (subseq (script-name request) 1)))
+ (mulkcms::find-mulkcms-request-handler relative-path)))
+
+(defun setup-handlers ()
+ (setq *dispatch-table*
+ (list* 'dispatch-static-file-request
+ (create-prefix-dispatcher "/admin" 'handle-admin-request)
+ 'dispatch-mulkcms-request
+ *dispatch-table*))
+ (setq *default-handler* 'handle-mulkcms-request))
+
+(defun start-server ()
+ (setq hunchentoot:*hunchentoot-default-external-format*
+ (flexi-streams:make-external-format :utf-8))
+ (setup-handlers)
+ (hunchentoot:start (make-instance 'hunchentoot:acceptor
+ :port *server-port*
+ :address *server-address*)))