diff --git a/src/handlers/survey.lisp b/src/handlers/survey.lisp index 6692e44..ea3a6ce 100644 --- a/src/handlers/survey.lisp +++ b/src/handlers/survey.lisp @@ -1,19 +1,5 @@ (in-package :ml-survey/handlers) -(defun survey-uri-p (uri) - "Check if the request URI matches the pattern '/survey/'" - (check-type uri string) - (let ((parts (split-uri uri)) - (survey (make-survey uri))) - (and (= (length parts) 2) - (string= (first parts) "survey") - (every #'digit-char-p (second parts)) - (funcall survey 'id-p)))) - -(defun survey-uri (request) - (let ((uri (request-uri request))) - (survey-uri-p uri))) - (defun make-survey (uri) (labels ((survey-fn (action) (case action @@ -29,6 +15,10 @@ (load-response (make-surveys-db-path))))))))) #'survey-fn)) +(defun survey-uri (request) + (let ((survey (make-survey (request-uri request)))) + (funcall survey 'uri-p))) + (define-easy-handler (survey :uri #'survey-uri) () (let ((survey (make-survey (request-uri*)))) (ml-survey/views:survey (funcall survey 'id) (funcall survey 'properties))))