diff --git a/test/docs/demo.html b/test/docs/demo.html
new file mode 100644
index 0000000..486c5c6
--- /dev/null
+++ b/test/docs/demo.html
@@ -0,0 +1 @@
+Hello Fileserver!
diff --git a/test/etc/config-web.lisp b/test/etc/config-web.lisp
index 0e52967..c4faa00 100644
--- a/test/etc/config-web.lisp
+++ b/test/etc/config-web.lisp
@@ -6,7 +6,10 @@
(let ((cfg (config:add *config* :server
:class 'server:config
- :port "8899"))))
+ :port "8899"
+ :routes
+ `((nil server:fileserver
+ :doc-root ,(t:test-path "" "docs")))))))
(let ((cfg (config:add *config* :client
:class 'client:config
diff --git a/web/server.lisp b/web/server.lisp
index aed0494..6989b68 100644
--- a/web/server.lisp
+++ b/web/server.lisp
@@ -5,7 +5,8 @@
(:local-nicknames (:config :scopes/config)
(:core :scopes/core))
(:export #:config #:address #:port #:routes
- #:*listener* #:setup #:start #:stop))
+ #:*listener* #:setup #:start #:stop
+ #:fileserver #:message-handler))
(in-package :scopes/web/server)
@@ -32,10 +33,15 @@
(defun stop (ctx)
(clack:stop (listener ctx)))
-(defun fileserver (ctx env doc-root)
- (let* ((rel-path (str:join "/" (getf env :messaage-head)))
+(defun fileserver (ctx env &key doc-root)
+ (print env)
+ (let* ((message-head (getf env :message-head))
+ (rel-path (str:join "/" (cdr message-head)))
(file-app (make-instance 'lack/app/file:lack-app-file
:file rel-path :root doc-root)))
+ (format t "~&fileserver: doc-root ~s, rel-path ~s, message-head ~s~%"
+ doc-root rel-path message-head)
+ (format t "~&file path: ~s~%" (merge-pathnames rel-path doc-root))
(lack/component:call file-app env)))
(defun message-handler (ctx env)
@@ -43,9 +49,18 @@
'(200 (:content-type "text/plain") ("Hello World!")))
(defun select-app (ctx env)
+ (dolist (r (routes (core:config ctx)))
+ (if (match (car r) nil)
+ (progn
+ (setf (getf env :message-head) (str:split "/" (getf env :path-info)))
+ (format t "~&route: ~s~%" r)
+ (return-from select-app
+ #'(lambda ()
+ (apply (cadr r) ctx env (cddr r)))))))
#'(lambda () (message-handler ctx env)))
-(defun match (pattern path))
+(defun match (pattern path)
+ t)
;;;; server context (= service)