|
@@ -92,16 +92,18 @@
|
|
|
"OK")
|
|
"OK")
|
|
|
|
|
|
|
|
(defmacro def-webhook-handler (name (&rest routes) &body body)
|
|
(defmacro def-webhook-handler (name (&rest routes) &body body)
|
|
|
- (let ((parts (gensym "parts")))
|
|
|
|
|
|
|
+ (alexandria:with-gensyms (g-parts g-hook g-data g-headers)
|
|
|
`(progn
|
|
`(progn
|
|
|
- (defun ,name (hook data headers)
|
|
|
|
|
- (declare (ignorable data headers))
|
|
|
|
|
- (let ((,parts (split-sequence:split-sequence #\/ hook)))
|
|
|
|
|
- (when (member (car ,parts) (list ,@routes) :test #'equal)
|
|
|
|
|
- (log:info ,parts)
|
|
|
|
|
|
|
+ (defun ,name (,g-hook ,g-data ,g-headers)
|
|
|
|
|
+ (let* ((,g-parts (split-sequence:split-sequence #\/ ,g-hook))
|
|
|
|
|
+ (*hook* ,g-hook)
|
|
|
|
|
+ (*data* ,g-data)
|
|
|
|
|
+ (*headers* ,g-headers)
|
|
|
|
|
+ (*paths* (rest ,g-parts)))
|
|
|
|
|
+ (when (member (car ,g-parts) (list ,@routes) :test #'equal)
|
|
|
|
|
+ (log:info ,g-parts)
|
|
|
(handler-case
|
|
(handler-case
|
|
|
- (let ((paths (rest ,parts)))
|
|
|
|
|
- ,@body)
|
|
|
|
|
|
|
+ ,@body
|
|
|
(error (e) (log:error "~A" e))))))
|
|
(error (e) (log:error "~A" e))))))
|
|
|
(add-hook :webhook ',name))))
|
|
(add-hook :webhook ',name))))
|
|
|
|
|
|