Есть ли способ расширить ресурс освободителя дополнительными решениями без изменения ресурса? - PullRequest
0 голосов
/ 02 июля 2019

Я хочу расширить существующее defresource дополнительным решением.

Допустим, у меня есть (обратите внимание, что это не реальный код, а пример для демонстрации того, что я пытаюсь сделать):


(defresource get-something [{:keys [service]} ctx]
  resource-defaults
  :allowed-methods [:get]
  :authorized? (authorized? ctx)
  :exists? (fn [_]
             true)
  :handle-ok (fn [{:keys [::result]}]
               result))

тогда я хочу «расширить» get-something с дополнительным решением, например,


malformed? (fn [_] false)

Под «расширением» я подразумеваю добавить решение в рабочий процесс обработчика без измененияget-something, таким образом получая ресурс, который использует все решения.

(resource
    (get-something service ctx)
    malformed? (fn [_] false))

Возможно ли это вообще?

1 Ответ

0 голосов
/ 05 июля 2019

В конце определения ресурса - это карта и данные, которыми можно манипулировать следующим образом:

(def get-something 
  (merge resource-defaults
         { :allowed-methods [:get]
           :authorized? #authorized?
           :exists? true
           :handle-ok ::result}))


(defresource get-something-handler get-resource)
(defresource get-something-extended-handler get-resource :malformed? false)

;; or

(defresource get-something-extended-handler 
   (merge get-resource {:malformed? false})
...