diff --git a/src/app.lisp b/src/app.lisp index 951042e..c34f727 100644 --- a/src/app.lisp +++ b/src/app.lisp @@ -32,7 +32,8 @@ :directory "src/routes") (jg:static-path *app* "/assets/" "src/assets/") (jg:install-middleware *app* mw:*public-files*) - (jg:install-middleware *app* mw:*normalize-path*)) + (jg:install-middleware *app* mw:*normalize-path*) + (jg:install-middleware *app* mw:*recovery*)) (defun update () (stop) diff --git a/src/middlewares/recovery.lisp b/src/middlewares/recovery.lisp new file mode 100644 index 0000000..91f9214 --- /dev/null +++ b/src/middlewares/recovery.lisp @@ -0,0 +1,15 @@ +(defpackage #:hp/middlewares/recovery + (:use #:cl) + (:export #:*recovery*)) +(in-package #:hp/middlewares/recovery) + +;;; TODO: insert logger + +(defparameter *recovery* + (lambda (app) + (lambda (env) + (handler-case + (funcall app env) + (error (c) + `(500 (:content-type "text/plain") + (,(format nil "Internal Server Error: ~a~%" c))))))))