diff --git a/hp.asd b/hp.asd index 6099a5d..4b5d019 100644 --- a/hp.asd +++ b/hp.asd @@ -7,4 +7,4 @@ :depends-on ("hp/app") :in-order-to ((test-op (test-op "hp-tests")))) -(register-system-packages "lack-middleware-accesslog" '(:lack.middleware.accesslog)) +(register-system-packages "lack-middleware-static" '(:lack.middleware.static)) diff --git a/src/app.lisp b/src/app.lisp index a46a420..c0b1eb6 100644 --- a/src/app.lisp +++ b/src/app.lisp @@ -6,8 +6,7 @@ (:local-nicknames (#:pi #:piccolo)) (:local-nicknames (#:view #:hp/view)) (:local-nicknames (#:cmp #:hp/components/**/*)) - (:import-from #:lack.middleware.accesslog - #:*lack-middleware-accesslog*) + (:local-nicknames (#:mw #:hp/middleware)) (:export #:start #:stop #:update)) @@ -24,8 +23,7 @@ (defun update () (jg:clear-middlewares *app*) - (jg:install-middleware *app* *lack-middleware-accesslog*) - (jg:static-path *app* "/public/" "public/") + (jg:install-middleware *app* mw:*public-files*) (fbr:assign-routes *app* :system "hp" :directory "src/routes")) diff --git a/src/middleware.lisp b/src/middleware.lisp new file mode 100644 index 0000000..918041d --- /dev/null +++ b/src/middleware.lisp @@ -0,0 +1,21 @@ +(defpackage #:hp/middleware + (:use #:cl) + (:local-nicknames (#:jg #:jingle)) + (:import-from #:lack.middleware.static + #:*lack-middleware-static*) + (:export #:*public-files*)) +(in-package #:hp/middleware) + +(defun exist-public-file-p (path) + (let ((pathname (probe-file (concatenate 'string "public" path)))) + (and pathname (pathname-name pathname)))) + +(defparameter *public-files* + (lambda (app) + (funcall *lack-middleware-static* + app + :path (lambda (path) + (if (exist-public-file-p path) + path + nil)) + :root (asdf:system-relative-pathname :hp "public/"))))