diff --git a/src/main/resource.cl b/src/main/resource.cl index 6ae7d52..38bdb3e 100644 --- a/src/main/resource.cl +++ b/src/main/resource.cl @@ -85,6 +85,19 @@ (let ,bindings ,@body))))) +(defmacro with-query-args (vars request &body body) + (loop with data-sym = (gensym) + for var in vars + collect + `(,var (cdr (assoc (symbol-name ',var) ,data-sym + :test #'string-equal))) + into bindings + finally + (return + `(let ((,data-sym (url-query-arguments (request-url ,request)))) + (let ,bindings + ,@body))))) + ;;; Some further utility resources ;;; Redirection diff --git a/src/package.cl b/src/package.cl index e4910a3..3132b4c 100644 --- a/src/package.cl +++ b/src/package.cl @@ -202,6 +202,7 @@ #:dynamic-form-resource-processor #:parse-form-data #:with-form-data + #:with-query-args #:redirector-resource #:redirector-resource-code #:redirector-resource-destination