mirror of
https://github.com/vale981/lack
synced 2025-03-06 01:41:39 -05:00
Add lack.middleware.mount.
This commit is contained in:
parent
6718359cba
commit
8747a989d0
2 changed files with 32 additions and 0 deletions
10
lack-middleware-mount.asd
Normal file
10
lack-middleware-mount.asd
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
(in-package :cl-user)
|
||||||
|
(defpackage :lack-middleware-mount-asd
|
||||||
|
(:use :cl :asdf))
|
||||||
|
(in-package :lack-middleware-mount-asd)
|
||||||
|
|
||||||
|
(defsystem lack-middleware-mount
|
||||||
|
:version "0.1"
|
||||||
|
:author "Eitaro Fukamachi"
|
||||||
|
:license "LLGPL"
|
||||||
|
:components ((:file "src/middleware/mount")))
|
22
src/middleware/mount.lisp
Normal file
22
src/middleware/mount.lisp
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
(in-package :cl-user)
|
||||||
|
(defpackage lack.middleware.mount
|
||||||
|
(:use :cl))
|
||||||
|
(in-package :lack.middleware.mount)
|
||||||
|
|
||||||
|
(defvar *lack-middleware-mount*
|
||||||
|
(lambda (app path mount-app)
|
||||||
|
(let ((len (length path)))
|
||||||
|
(lambda (env)
|
||||||
|
(let ((path-info (getf env :path-info)))
|
||||||
|
(cond
|
||||||
|
((string= path-info path)
|
||||||
|
(setf (getf env :path-info) "/")
|
||||||
|
(funcall mount-app env))
|
||||||
|
((and (< len (length path-info))
|
||||||
|
(string= path-info path :end1 len)
|
||||||
|
(char= (aref path-info len) #\/))
|
||||||
|
(setf (getf env :path-info)
|
||||||
|
(subseq path-info (length path)))
|
||||||
|
(funcall mount-app env))
|
||||||
|
(t
|
||||||
|
(funcall app env))))))))
|
Loading…
Add table
Reference in a new issue